java读取cmyk_用于检测CMYK图像的JAI ImageIO的纯Java替代品

首先我想解释导致问题的情况/要求:

在我们的网络应用程序中,我们不能支持CMYK图像(JPEG),因为IE 8及更低版本无法显示它们.

因此,我们需要检测有人想要上传这样的图像并拒绝它.

不幸的是,Java的ImageIO不会读取这些图像,也不会使我无法获取检测到的颜色空间.从调试看来,JPEGImageReader内部获取颜色空间代码11(这将意味着JCS_YCCK),但是我无法安全地访问该信息.

当查询读者的图像类型时,我没有为CMYK任何内容,所以我可能假设没有图像类型=不支持的图像.

我使用成像工具将源CMYK图像转换为RGB,以测试是否可以读取(我尝试在获取消息“不支持CMYK”时模拟管理员的步骤).但是,JPEGImageReader不会读取该图像,因为它假定(在源代码中注释)3分量RGB颜色空间,但是图像头部会报告4个组件(可能是RGBA或ARGB),因此会抛出IllegalArgumentException异常.

因此,ImageIO不是一个选项,因为我无法可靠地获取图像的颜色空间,我无法告诉管理员为什么否则可以由于某些内部的内部图像(浏览器可以显示)可以被接受错误.

这导致我尝试JAI ImageIO,他的CLibJPEGImageReader做的很好,正确地读取我所有的测试图像.

然而,由于我们将应用程序部署在可能承载其他应用程序的JBoss中,我们希望尽可能地将它们隔离开来. AFAIK,我需要将JAI ImageIO安装到JRE,否则可以使本机库可用,以便使用它们,因此其他应用程序也可能会访问它们,这可能会导致副作用(至少我们会有测试很多,以确保不是这种情况).

这就是这个问题的解释,这里再说一遍:

是否有任何纯Java替代JAI ImageIO可靠地检测和可能转换CMYK图像?

提前致谢,

托马斯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值