image - 为什么浏览器显示的图形不同以及如何更改?

标签 image google-chrome firefox png color-management

我现在正在开发一个网站。遗憾的是,png Logo 以及使用相同颜色的背景在某些装有 Firefox in lila 的计算机上显示。使用 Chrome 时,蓝色看起来符合预期。

使用的显示器也有影响,但使用 Chrome 一切看起来都很好。

这个问题从何而来?我该如何解决?

Here is my image

您可以在此处看到我的显示器的照片。带有火狐浏览器的莱拉(左侧)稍微可见。最大的问题是,该颜色用在我网站的背景中,在 Firefox 中看起来比在 Firefox 中更漂亮,并且显示的颜色不再与我网站的 css 中的其他颜色匹配。

enter image description here

上图来自firefox: enter image description here

上图来自chrome: enter image description here

最佳答案

默认情况下,Firefox 处理包含 sRGB 配置文件的图像与未标记的图像和 HTML 颜色略有不同。它具有三种操作模式,您可以通过转到“about:config”搜索 gfx.color_management.mode 来选择。默认值为“2”。将其更改为“0”(无颜色管理)或“1”(颜色管理所有内容),您将获得良好的匹配。

请参阅 https://bugzilla.mozilla.org 上的四年前错误 #621474并向下滚动到评论 #49 以查看补丁的当前状态。

由于这些差异(您无法控制人们使用的设置),最好从图像中删除 iCCP block 或 sRGB block 。浏览器将假定图像位于 sRGB 色彩空间中,并根据 HTML 颜色正确显示它。

“pngcheck”表示您有 iCCP 和 cHRM block :

$ pngcheck -v so-logo.png
File: so-logo.png (147985 bytes)
  chunk IHDR at offset 0x0000c, length 13
    506 x 171 image, 32-bit RGB+alpha, non-interlaced
  chunk pHYs at offset 0x00025, length 9: 2835x2835 pixels/meter (72 dpi)
  chunk iCCP at offset 0x0003a, length 2639
    profile name = Photoshop ICC profile, compression method = 0 (deflate)
    compressed profile = 2616 bytes
  chunk cHRM at offset 0x00a95, length 32
    White x = 0.31269 y = 0.32899,  Red x = 0.63999 y = 0.33001
    Green x = 0.3 y = 0.6,  Blue x = 0.15 y = 0.05999
  chunk IDAT at offset 0x00ac1, length 145212
    zlib: deflated, 32K window, maximum compression
  chunk IEND at offset 0x24209, length 0
No errors detected in so-logo.png (6 chunks, 57.2% compression).

您可以使用多种工具来删除这些 block :

pngcrush (also removes the pHYs chunk):
pngcrush -rem alla -force logo.png logo_crushed.png

pngsplit+cat:
pngsplit logo.png
rm logo.png.0003.iCCP
rm logo.png.0004.cHRM
cat logo.png.00*.* > logo_split_cat.png

关于image - 为什么浏览器显示的图形不同以及如何更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323299/

相关文章:

arrays - Firebase 存储异步图像下载顺序不正确

javascript - 通过选择带有 Id 的图像来更改带有 Id 的文本

google-chrome - 在网站上启用“标签搜索”

javascript - 剪贴板中的粘贴图像功能如何在 Gmail 和 Google Chrome 12+ 中工作?

javascript - 扩展 navigator.serviceWorker 对象时出现 TypeError : 'get ready' called on an object that does not implement interface ServiceWorkerContainer.

android - data.getExtras().get ("data") android 中低分辨率图像的结果

php - 如何使用 PHP 在邮件正文上发送 base64 图像?

jquery - Chrome 中大图像的淡入淡出

java - 当尝试启动 geckodriver 时,我总是收到 Unknown option --port 错误

javascript - 当 POST 到 iframe 时,location.reload 会阻止表单提交(Firefox 37.0.2)