如何阻止浏览器使图像变暗
How to stop browser making images fainter
我注意到 Chrome 和 Firefox 在 Ubuntu Linux 和 Windows 8 上的以下行为:
包含文本的灰度图像在图片编辑器中查看时非常清晰,但浏览器以某种方式使灰色比在其中查看图像时要浅得多(Chrome,Firefox)
是否有人知道是否有办法阻止或控制它,也许通过 Javascript、服务器 headers 等?图像本身是否有某种编码没有明确设置要使用的正确灰色调?
不确定这种情况是从什么时候开始发生的,但是这张图片来自一个可能有上百万张此类图片的网站,以前从来没有出现过问题。
事实证明,原因与 png 文件中存储的元数据丢失有关,这意味着没有为图像分配正确的默认 ICC 颜色配置文件。旧版浏览器不关心颜色配置文件,在这种情况下,这意味着它们实际上显示了过去的图像 "properly",但新浏览器显示的图像模糊不清。
对于 png,可以在图像元数据中设置一个字节 属性,指示图像渲染器使用 sRGB ICC 图像颜色配置文件。
更新:
感谢 danack 指出正确的方法,而不是像我在原始修复中那样使用 exec():
$image->transformImageColorspace(Imagick::COLORSPACE_SRGB);
我还应该注意 contrary to what this page says the setImageColorspace() method does work as intended, as its function is not to actually make changes to the file colorspace, but only to set the colorspace that the image claims to be in (aka "sets the colorspace member of the Image structure" 根据 ImageMagick API 文档)。相比之下,transformImageColorSpace() 实际上进行了所需的更改以使图像显示为该色彩空间。
我注意到 Chrome 和 Firefox 在 Ubuntu Linux 和 Windows 8 上的以下行为:
包含文本的灰度图像在图片编辑器中查看时非常清晰,但浏览器以某种方式使灰色比在其中查看图像时要浅得多(Chrome,Firefox)
是否有人知道是否有办法阻止或控制它,也许通过 Javascript、服务器 headers 等?图像本身是否有某种编码没有明确设置要使用的正确灰色调?
不确定这种情况是从什么时候开始发生的,但是这张图片来自一个可能有上百万张此类图片的网站,以前从来没有出现过问题。
事实证明,原因与 png 文件中存储的元数据丢失有关,这意味着没有为图像分配正确的默认 ICC 颜色配置文件。旧版浏览器不关心颜色配置文件,在这种情况下,这意味着它们实际上显示了过去的图像 "properly",但新浏览器显示的图像模糊不清。
对于 png,可以在图像元数据中设置一个字节 属性,指示图像渲染器使用 sRGB ICC 图像颜色配置文件。
更新: 感谢 danack 指出正确的方法,而不是像我在原始修复中那样使用 exec():
$image->transformImageColorspace(Imagick::COLORSPACE_SRGB);
我还应该注意 contrary to what this page says the setImageColorspace() method does work as intended, as its function is not to actually make changes to the file colorspace, but only to set the colorspace that the image claims to be in (aka "sets the colorspace member of the Image structure" 根据 ImageMagick API 文档)。相比之下,transformImageColorSpace() 实际上进行了所需的更改以使图像显示为该色彩空间。