奇怪的知识又增加了,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)

大家都在看

  • String类常用的API

    String类常用API总结及注意事项 String类常用的API 字符串内容的比较: 注意: 不能使用 == 去比较两个字符串的内容。原理:比较的是字符串的地址。(如果两个字符串…

    Java 2023年6月6日
    089
  • springboot Java HttpServletRequest 转 CURL 命令 【Servlet】利用 HttpServletRequestWrapper 实现对request body的二次读取,可用于记录日志

    https://blog.csdn.net/weixin_43833834/article/details/119816469 http://www.manongjc.com/de…

    Java 2023年5月29日
    090
  • Spring Boot优化

    针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点: 线程数 超时时间 jvm优化 首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户…

    Java 2023年5月30日
    0117
  • SpringBoot系列之发送邮件极速入门与实践

    一、Email前言介绍 二、Email例子实践 2.1 开发实验环境准备 2.2 Meavn配置文件 2.3 application配置 2.4 发送文本格式邮件 2.5 发送Ht…

    Java 2023年5月30日
    098
  • 互联网技术部门该如何管理

    一、敏捷开发 1.快速开发、快速迭代。 2.组件式开发,避免重复造轮子。 3.制定代码标准。 4.并行开发,高效配合。 5.单元测试必须覆盖所有核心业务。 二、DevOps流程建立…

    Java 2023年6月16日
    090
  • JAVA中Integer的==和equals注意

    “equals”比较equals(Object obj)方法,在equals(Object obj)方法中,会先判断参数中的对象obj是否是Integer同…

    Java 2023年5月29日
    079
  • WIN进程注入&BypassUAC&令牌窃取

    WIN进程注入&BypassUAC&令牌窃取 本地提权—win令牌窃取 假冒令牌可以假冒一个网络中的另一个用户进行各类操作。 所以当一个攻击者需要域管理员的操作权限…

    Java 2023年6月6日
    088
  • 数据结构与算法之随机快速排序

    快速随机排序的思路是从一个数组中随机选择一个主元,然后将这个主元放到数组的最后.循环数组时,先定义一个指针,发现了比主元小的元素,如果指针和循环下标相同 则只是把指针自增,如果发现…

    Java 2023年6月8日
    079
  • JAVA入门基础_从零开始的培训_Linux基础入门理解

    Linux操作系统 Linux操作系统的应用领域 VMware虚拟机的安装 在BIOS中开启操作系统的虚拟化 虚拟机的实际安装 Centos7.6版本的安装 下载Centos操作系…

    Java 2023年6月9日
    076
  • Java集合,队列,链表总结

    面向对象 封装 – 隐藏对象的属性和实现细节,仅对外公开接口; 继承 – 子类继承父类的特征和行为; 多态 – 同一个行为具有多个不同表现形式或…

    Java 2023年6月7日
    095
  • @RequestBody使用说明

    @RequestBody 使用 @RequestBody这个对于一般刚接触来说,确实有点陌生,但是现在前端,后端技术分的太细,越来越多的技术层出不穷,前端就分化出POST ,GET…

    Java 2023年6月16日
    086
  • 5.伪异步I/O编程

    样例: 1.定义一个线程池…

    Java 2023年6月5日
    075
  • 【SpringBoot实战】分布式定时任务锁Shedlock

    ShedLock(https://github.com/lukas-krecan/ShedLock) 是一个轻量级的分布式定时任务锁组件,使用其可以满足我们上面的技术需求,Shed…

    Java 2023年5月29日
    081
  • JavaDoc文档生成

    JavaDoc文档 JavaDoc是Sun公司提供的一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API 注释标签 标记说明标签类型@author 作者作者标…

    Java 2023年6月6日
    076
  • 服务路由

    前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 今天,来聊点短的,服务路由 Router,本文讲的是路由的调用路径,不讲路由…

    Java 2023年6月16日
    0105
  • 【转】Spring Cache简介

    从3.1开始, Spring引入了对 Cache的支持。其使用方法和原理都类似于 Spring对事务管理的支持。 Spring Cache是作用在方法上的,其核心思想是这样的:当我…

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