我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:
进一步调查表明,问题出在读取图像上——在Windows和Linux上,ImageIO.read(inputStream)返回具有完全相同参数的图像对象,但是对于相同的图像(刚刚读取),颜色探针getRGB(x,y)返回不同的值。
Linux中的颜色处理在Java 8u05和8u11上有所不同,8u05呈“红色”,而8u11则如上所示。
这与α通道无关——此特定源图像为JPEG Type 5(TYPE_3BYTE_BGR),从Adobe Lightroom导出,并转换为sRGB,没有任何其他技巧。
这也影响到当时导出的所有图像(实际上是该网站上的所有图像)。
除了等待JDK的修复之外,是否有人可以提供关于如何使其正常工作的建议?或者建议替代库,可在此处使用(EJB,数据存储在MongoDB中,因此使用InputStream获取数据-没有文件系统访问)。
谢谢!
我正在尝试读取用户上传的JPEG图像(任意)以在服务器应用程序中创建缩略图。 在Windows7 / Oracle Java 8u11上系统运行良好,但在服务器上的CentOS下存在颜色模型问题:
原始图像为:
http://studio-st.ru/media/portfolio/image/45
在Windows开发工作站上生成的缩略图是完全正确的,但在Linux上出现了颜色偏移(Java 8u05呈红色,Java 8u11颜色失真)。由于原始示例已经修复,因此此处未提供。进一步调查表明,问题出在读取图像上——在Windows和Linux上,ImageIO.read(inputStream)返回具有完全相同参数的图像对象,但是对于相同的图像(刚刚读取),颜色探针getRGB(x,y)返回不同的值。
Linux中的颜色处理在Java 8u05和8u11上有所不同,8u05呈“红色”,而8u11则如上所示。
这与α通道无关——此特定源图像为JPEG Type 5(TYPE_3BYTE_BGR),从Adobe Lightroom导出,并转换为sRGB,没有任何其他技巧。
这也影响到当时导出的所有图像(实际上是该网站上的所有图像)。
除了等待JDK的修复之外,是否有人可以提供关于如何使其正常工作的建议?或者建议替代库,可在此处使用(EJB,数据存储在MongoDB中,因此使用InputStream获取数据-没有文件系统访问)。
谢谢!
更新:问题似乎与Java8的新颜色管理模块有关 - 它不理解这种图像格式。切换到传统的CMM可以解决这个问题。请参阅下面正确评论中的详细信息。