java 判断cmyk_JAI ImageIO的纯Java替代品,用于检测CMYK图像

首先,我想解释一下导致这个问题的情况/要求:

在我们的Web应用程序中,由于IE 8及更低版本无法显示它们,因此我们不支持CMYK图像(JPEG)。因此,我们需要检测何时有人要上传此类图像并拒绝它。

不幸的是,Java的ImageIO无法读取这些图像,或者使我无法获得检测到的色彩空间。通过调试,似乎在JPEGImageReader内部获得了颜色空间代码11(这意味着JCS_YCCK),但是我无法安全地访问该信息。

当向阅读器查询图像类型时,我没有得到CMYK的信息,因此我可能会假设no image types = unsupported image。

我使用成像工具将源CMYK图像转换为RGB,以便测试它是否可读(我在收到“不支持CMYK”消息时尝试模拟管理员的步骤)。但是,JPEGImageReader将不会读取该图像,因为它

假定

(在源中有注释!)3分量RGB颜色空间,但是图像标头报告了4个分量(可能是RGBA或ARGB),因此IllegalArgumentException抛出。

因此,ImageIO不是一个选择,因为我无法可靠地获取图像的色彩空间,而且我也无法告诉管理员为什么由于某些内部原因而无法接受原本不错的图像(可以由浏览器显示)错误。

这使我尝试使用JAI ImageIO,CLibJPEGImageReader它的性能出色并且可以正确读取我所有的测试图像。

但是,由于我们将应用程序部署在可能还托管其他应用程序的JBoss中,因此我们希望将它们保持尽可能的隔离。AFAIK,我需要将JAI

ImageIO安装到JRE或以其他方式提供本机库才能使用它们,因此其他应用程序也可能会访问它们,这可能会引起副作用(至少我们会进行大量测试以确保不是这种情况)。

这就是问题的解释,这里又来了: JAI ImageIO是否有任何纯Java替代品,可以可靠地检测并可能转换CMYK图像?

提前致谢,

汤玛士

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值