这个问题与Firefox 3.5 color correction hack?密切相关。
我的情况是,我有一个帆布游戏,其中使用的图像包含关于它们的形状、连接点等的附加信息。这些信息存储在PNG图像本身中,使用有意义的颜色(例如,RGB(255,255,0)作为连接点)。
在画布上加载元素和绘图创建图像对象,设置img.src,并在img.load函数中预处理读取敏感信息的图像数据(并在绘制到画布之前从图像数据中删除敏感像素)。
问题是:在FF中,像素应该是255,255,0,实际上是255,254,0。我在FF颜色校正方面没有问题(我不在乎显示的图像是否有正确的颜色,或者稍微修改了一下),但我希望获取图像数据会给我提供未经校正的数据。我正在寻找一种解决方案,它不会涉及更改服务器上的图像。有什么办法吗?例如:img.setColorProfile()、img.disableColorCorrection()、img.getImageData(disableColorCorrection)或img.getImageData(colorProfile)?
发布于 2012-10-06 10:24:38
这个问题在加载图像时可能比图像绘制做得更多。
我认为正确的解决方案是从图像中删除颜色配置文件信息(这似乎是您想要的)。如果可能的话,服务器为Firefox提供另一个图像资源,如果您不需要完整的原始数据。
http://f6design.com/journal/2006/12/01/fixing-png-gamma/
此外,如果服务器是合作的,并且允许CORS和AJAX加载图像,您可以在纯Javascript中解码PNG的复制。使用png.js在Javascript中解码图像,并从图像数据(而不是<img>)创建源<canvas>。这样,您就可以控制每个PNG像素的RGB值。
https://stackoverflow.com/questions/12758860
复制相似问题