java图片处理Unsupported Image Type解决

使用java读取JPEG报错Unsupported Image Type:

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)

一、异常解释
javax.imageio.IIOException: Unsupported Image Type异常一般情况是由于图片颜色模式是CMYK导致的,Java默认是没带CMYK格式读取的功能的,内部读取文件的类JPEGImageReader只能读取RGB color model

二、解决方案
使用TwelveMonkeys就可以解决了。
TwelveMonkeys的使用比较简单,只要把相关的jar包加入到类路径,他的类我们基本不会用到,只要使用jdk ImageIO或其上层的接口就行了。JDK的ImageIO有自动发现功能,会自动查找相关的编解码类并使用,而不使用jdk默认的编解码类。

引入新的maven依赖

<!--imageio-jpeg CMYK模式读取支持-->
<dependency>
    <groupId>com.twelvemonkeys.imageio</groupId>
    <artifactId>imageio-jpeg</artifactId>
    <version>3.6</version>
</dependency>

使用以下参考的方法均有颜色异常,读twelvemonkeys源码也是用的ICCProfiles进行转换,查到的一个工具类是FastCMYKToRGB,但是单独摘出来使用颜色还是有偏差。下面参考中convertCmykToRgb方法也是使用ICCProfiles进行转换,但是也是颜色异常,只有TwelveMonkeys的imageio-jpeg是最简答的方案,如有直接转换的可贴上代码一起讨论。

参考:
Java CMYK图片转RGB图片
TwelveMonkeys图片格式转换git地址
java下cmyk图片读取和转换rgb,以及图片压缩
Java 读取jpeg图片 Unsupported Image Type 异常
有颜色异常
Java读取图片 cmyk转rgb
java下cmyk图片读取和转换rgb
使用convertCmykToRgb方法颜色异常
Java读取图片 cmyk转rgb
Reading CMYK JPEG images with Java ImageIO

AdobeICCProfilesCS4Win_end-user.zip下载
为什么 ARGB 和 CMYK 之间来回转换会不断损失颜色

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值