在Firefox中以编程方式为每个图像禁用色彩校正?

时间:2012-10-06 10:14:50

标签: firefox colors png html5-canvas color-profile

这个问题与Firefox 3.5 color correction hack?

密切相关

我的情况是有一个我的画布游戏,其中使用的图像带有关于它们的形状,连接点等的附加信息。这些信息存储在PNG图像本身,使用有意义的颜色(例如连接点的RGB(255,255,0)。

在画布上加载元素和绘画创建了Image对象,设置了img.src,在img.load函数中我预处理读取敏感信息的图像数据(并在绘制到画布之前从图像数据中删除敏感像素)。 / p>

问题:在FF中,应该是255,255,0的像素实际上是255,254,0。我没有FF色彩校正的问题(我不在乎显示的图像是否有正确的颜色,或略微修改),但我希望得到图像数据给我未修正的数据。我正在寻找一种解决方案,它不会涉及在服务器上更改图像。有什么办法吗?例如。     img.setColorProfile(),或     img.disableColorCorrection(),或     img.getImageData(disableColorCorrection)或img.getImageData(colorProfile)?

1 个答案:

答案 0 :(得分:1)

图像加载问题可能比图像绘制更多。

我认为正确的解决方案是从图像中剥离颜色配置文件信息(您似乎想要使用它)。如果你不需要保持原始数据的原样,如果可能的话,为Firefox提供另一个图像资源。

http://f6design.com/journal/2006/12/01/fixing-png-gamma/

此外,如果服务器是合作的,您可以在纯Javascript中解码PNG图像,并允许加载图像的CORS和AJAX。您使用png.js在Javascript中解码图像,并从图像数据(而不是<canvas>)创建源<img>。通过这种方式,您可以控制来控制每个PNG像素的RGB值。

https://github.com/devongovett/png.js