Invalid icc profile: duplicate sequence numbers

本文介绍了解决处理图片时出现的 javax.imageio.IIOException 异常的方法。通过引入 TwelveMonkeysImageIO 插件并调整版本以适应 JDK 版本,可以有效避免因 ICC 配置文件重复序列号导致的问题。

处理图片时报异常信息:

javax.imageio.IIOException: Invalid icc profile: duplicate sequence numbers

报异常的图片:


网上有人遇到了同样的异常信息,并使用插件解决了问题:

http://stackoverflow.com/questions/32023809/javax-imageio-iioexception-invalid-icc-profile-duplicate-sequence-numbers

TwelveMonkeys ImageIO官网地址

http://haraldk.github.io/TwelveMonkeys/#jpeg

TwelveMonkeys ImageIO is a collection of plugins and extensions for Java's ImageIO.

These plugins extends the number of image file formats supported in Java, using the javax.imageio.* package. The main purpose of this project is to provide support for formats not covered by the JRE itself.

TwelveMonkeys ImageIO工程主要支持了一些JRE自己没有覆盖到的图片格式。


问题解决方案

1.将相应的格式包导入到工程中,如jpeg

<dependency>

<groupId>com.twelvemonkeys.imageio</groupId>

<artifactId>imageio-jpeg</artifactId>

<version>3.0-rc5</version>

</dependency>

注意版本问题

最新版的插件需要使用jdk1.7,如<version>3.2.1</version>

而我们一般工程都还停留在jdk1.6,所以我们需要使用其早期版本如<version>3.0-rc5</version>

其实也可以使用官网提供的源代码使用1.6版本进行编译,但源码有问题,最终放弃了。

2.加载问题

加入jpeg包后,java工程main函数跑问题解决了,一切正常,但放web工程tomcat中问题依旧。

Because the ImageIO plugin registry (the IIORegistry) is "VM global", it doesn't by default work well with servlet contexts.

上面是插件官网的说词,需要将下面的代码加入到处理图片的地方即可。

ImageIO.scanForPlugins()


在图像处理或打印流程中,用户遇到的 `Invalid ICC profile found only markers` 错误通常与 ICC 配置文件的损坏、不完整或格式错误有关。该错误提示表明系统在尝试解析 ICC 配置文件时仅检测到标记(markers),而未找到预期的有效数据结构。 ### 原因分析 1. **ICC 配置文件损坏** 文件可能在保存或传输过程中出现损坏,导致配置文件内容不完整或无法被正确识别。这种情况下,解析器可能仅能读取到部分结构信息,如标记头[^1]。 2. **非标准或不兼容的 ICC 配置文件** 某些软件生成的 ICC 配置文件可能不符合国际色彩联盟(ICC)的标准规范,尤其是在使用自定义或旧版本的图像处理工具时。这类文件可能缺少必要的标签或元数据,从而引发解析错误[^1]。 3. **嵌入式 ICC 配置文件不完整** 在图像文件中嵌入 ICC 配置文件时,如果操作未完成或程序异常终止,可能导致配置文件片段残留,只留下可识别的标记部分。 4. **图像编辑或转换工具的问题** 使用某些图像处理工具(如 Photoshop、GIMP 或命令行工具如 ImageMagick)导出图像时,若工具本身存在 bug 或设置不当,也可能生成无效的 ICC 数据。 ### 解决方案 1. **重新生成或嵌入有效的 ICC 配置文件** 使用专业的色彩管理工具(如 Adobe Photoshop、Little CMS 或 ICC Profile Creator)重新创建或修复 ICC 配置文件,并确保其符合 ICC 标准。 ```bash # 使用 ImageMagick 删除并重新嵌入 ICC 配置文件示例 convert input.jpg -strip output.jpg convert output.jpg -profile sRGB_IEC61966-2-1_black_scaled.icc new_output.jpg ``` 2. **从图像中移除无效的 ICC 配置文件** 如果当前不需要精确的颜色管理,可以考虑直接删除图像中的 ICC 配置文件以避免错误。 ```bash exiftool -icc_profile= image.jpg ``` 3. **更新图像处理软件** 确保使用的图像编辑和查看工具为最新版本,以获得对 ICC 配置文件更好的支持和兼容性。 4. **验证 ICC 配置文件完整性** 使用在线工具或专业软件检查 ICC 配置文件是否有效,例如通过 [ICC Profile Inspector](https://www.color.org/ProfileInspector.html) 进行分析。 5. **使用标准色彩空间输出图像** 在导出图像时选择标准色彩空间(如 sRGB IEC61966-2-1),以减少对特定 ICC 配置文件的依赖。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值