奇怪的知识又增加了,ImageMagick PDF转JPG图片合并的时候报Unsupported Image Type

之前在PDF转JPG时使用了ImageMagic这个强大的工具,起初使用都没有什么问题,但是突然生产出现部分转换后的图片合并失败的问题

报错信息:

javax.imageio.IIOException: Unsupported Image Type
       at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source)
       at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source)
       at javax.imageio.ImageIO.read(Unknown Source)
       at javax.imageio.ImageIO.read(Unknown Source)

JPG是正儿八经的jpg,我们使用JAVA自带的IMAGE类库,网上查了一下这种情况是因为jpg的颜色模式是cymk,而jdk默认能处理的rgb颜色模式的图片

刨去报错的内容,我们先来了解一下这两个颜色模式

RGB

RGB色彩模式是基于光源色发光原理定义,适用于显示器等发光体的颜色表示

以黑色介质为基础,通过光源三原色(红、绿、蓝)不同比例的亮度叠加,来获得各种不同的颜色,也就是所谓的相加色

CYMK

CMYK即CMY色彩模式是基于固有色光吸收/反射原理定义,适用于各种印刷媒介;

白光照射到物体上后,物体吸收掉其固有色的互补色光,从而反射光也就呈现为其固有色
以白色介质为基础,通过印刷三原色(青、品红、黄)不同比例的油墨混合,吸收原始色光中的对应波长,从而获得各种不同的颜色的反射效果,也就是所谓的相减色。

简而言之,RGB是颜色的叠加是相加色;CYMK是调节不通比例的油墨原色,是相减色

网络上有一堆CYMK转RGB的代码,但是我们的图片是ImageMagick生成的,所以我们还是要通过指令参数解决,指令模板如下:

magick convert -density 220 -quality 80 -background white -alpha remove  -colorspace sRGB {0} {1}/1.jpg

-colorspace sRGB 指定颜色模式为rgb,搞定

Original: https://www.cnblogs.com/surging-dandelion/p/15634968.html
Author: 蒲公英的狂想
Title: 奇怪的知识又增加了,ImageMagick PDF转JPG图片合并的时候报Unsupported Image Type

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579566/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 机器学习实战-决策树

    1.决策树的构造 1.1优缺点 优点: 计算复杂度不高:以ID3为例,每次运算都是基于某一列特征,特征计算完后,下次计算不考虑该最有特征,并且通过适当剪枝可以简化复杂度 输出结果易…

    Java 2023年6月14日
    076
  • WWDC2016-session401-CodeSign大改版

    自动签名机制和手动签名都明显看起来很好用。 自动签名有log 手动签名有具体的错误提示信息。 session401 Xcode Signing. 亲,你的眼睛好大 相声演员吗? Y…

    Java 2023年5月30日
    068
  • spring的事务管理

    点赞再看,养成习惯,微信搜索「 小大白日志」关注这个搬砖人。 文章不定期同步公众号,还有各种一线大厂面试原题、我的学习系列笔记。 事务的4种隔离级别,7种事务传播级别 Spring…

    Java 2023年6月8日
    087
  • Servlet 学习总结

    Servlet学习笔记 Servlet学习 学习视频为:https://www.bilibili.com/video/BV1Ta4y1H7Vc IDEA的使用 IDEA的简介 ID…

    Java 2023年6月14日
    064
  • IDEA常用设置及插件

    设置 1.设置打开后不直接进入项目 IDEA默认打开时会直接进入上次打开的目录,有的时候加载很长时间,但这个时候可能我们并不是要打开这个项目,这里有一个设置,在如图的位置,去掉勾选…

    Java 2023年6月5日
    068
  • scrapy框架之创建项目运行爬虫

    创建scrapy scrapy startproject 项目名称 创建蜘蛛(爬虫文件) scrapy genspider 蜘蛛名称 网址 爬取网页(举百度的列子) 编写爬虫文件 …

    Java 2023年6月5日
    095
  • Nginx 源码分析– 模块module 解析执行 nginx.conf 配置文件流程分析 一

    搭建nginx 服务器时,主要的配置文件nginx.conf 是部署和维护服务器人员经常要使用到的文件, 里面进行了许多服务器参数的设置。那么nginx 以模块module 为骨架…

    Java 2023年6月15日
    066
  • 老生常谈系列之Aop–CGLIB动态代理的底层实现原理

    老生常谈系列之Aop–CGLIB动态代理的底层实现原理 前言 上一篇老生常谈系列之Aop–JDK动态代理的底层实现原理简单讲解了JDK动态代理的实现,动态代…

    Java 2023年6月8日
    095
  • 如何使Session永不过期

    先说明情况:公司做监控系统,B/S结构,主要用在局域网内部!监控系统开机可能要开好长时间,管理员的ID 和权限等是写在Session里的——我想不用Cookies的原因可能是Coo…

    Java 2023年5月30日
    072
  • MongoDB 分片规则

    生命本身毫无意义,只有死亡才能让你邃晓人性的真谛! Ideal is the beacon. Without ideal, there is no secure direction…

    Java 2023年6月9日
    082
  • Spring5 学习笔记

    学习地址: B站-动力节点 个人代码: GitHub Spring 概述 1.1 Spring 简介 Spring Framework 是一个使用Java开发的、轻量级的、开源框架…

    Java 2023年6月5日
    073
  • spring-gateway基于数据库 + nacos 的动态路由

    动态路由的实现方式多种多样,研究一下基于数据方式的动态路由。 1. 创建项目,并pom.xml文件引入如下依赖 <span class="code-snippet_…

    Java 2023年6月7日
    077
  • 【力扣】523. 连续的子数组和

    给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回…

    Java 2023年6月8日
    040
  • Spring创建对象的方式

    ​ java;gutter:true;/**作者:呆萌老师*☑csdn认证讲师*☑51cto高级讲师*☑腾讯课堂认证讲师*☑网易云课堂认证讲师*☑华为开发者学堂认证讲师*☑爱奇艺千…

    Java 2023年6月13日
    073
  • MyBatis Generator备份

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/ys-wuhan/p/7126391.htmlAutho…

    Java 2023年5月30日
    047
  • 关于GC(中):Java垃圾回收相关基础知识

    Java内存模型 (图源: 深入理解JVM-内存模型(jmm)和GC) 区域名 英文名 访问权限 作用 备注 程序计数器 Program Counter Register 线程隔离…

    Java 2023年5月29日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球