我是靠谱客的博主 孤独期待,最近开发中收集的这篇文章主要介绍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 之间来回转换会不断损失颜色

最后

以上就是孤独期待为你收集整理的java图片处理Unsupported Image Type解决的全部内容,希望文章能够帮你解决java图片处理Unsupported Image Type解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部