检出此图像:



在Chrome和Firefox上,它将显示为梨形。现在,尝试保存它并查看保存在桌面上的它。此外,请尝试在Safari或Internet Explorer中查看。它将显示为苹果!

尝试单击图像并四处移动。您会注意到苹果出现了。

为什么会这样?

评论

如果我尝试在firefox上稍微拖动图像,则透明拖动的图像将使苹果aPear的形状

您是如何制作这张照片的?你能指出我一个网站吗?

对于将来的读者,这似乎已在当前版本的IE中修复。

但是您仍然可以将其下载到桌面上,然后在其中看到苹果,然后在Firefox,Chrome中以梨子的形式查看。

“固定”表示支持伽玛校正。

#1 楼

发生这种情况是因为某些浏览器执行了图像文件中指定的伽马校正。

这是未校正的图像。苹果图片中的“白色”像素包含梨的图片,以更高的强度存储,即非常明亮。



校正后的图像。梨图片中的“黑色”像素包含苹果的图片,以相当正常的强度存储,但通过伽玛校正将其缩小到接近黑色。



在屏幕上,我可以在第一个图像的白色像素中微弱地看到梨,但是在第二个图像中,苹果与周围的黑色像素无法区分。

(您可以也可以在经过伽玛校正的梨上看到一些色带,因为未经校正的图像使用的色域范围要小得多。)

PNG图像文件包含一个gAMA块,指定文件的伽玛值为0.02。在没有进行伽玛校正的情况下显示时,观看者会看到一个散布着“白色”像素的苹果,实际上是处于其原始(高)强度的梨。

在通过伽玛校正进行显示时,观看者会看到一种颜色校正的具有“黑色”像素的梨,实际上是苹果以较低的伽玛值渲染的图像。

显示梨的浏览器正在对图像进行伽玛校正,而显示苹果的浏览器却没有执行伽玛校正,但仅显示其原义颜色值。

评论


有关该主题的推荐读物:埃里克·布拉瑟尔(Eric Brasseur)的著名文章,题为“图片缩放中的伽马误差”。

– ulidtko
13年4月9日在8:51

@ulidtko现在是404。这是该Web存档上的副本。

–科尔·约翰逊(Cole Johnson)
17年5月3日在17:43

#2 楼

对于评论来说,这有点太多了,但希望对您有所帮助。

因此,我可以肯定地说,该问题与浏览器使用PNG解释伽玛信息的方式有关。这是一个非常有趣的问题,并且首先处理了伽玛信息的歧义。

PNG伽玛悲伤故事“改正”一文很好地总结了问题,补救措施和其他有趣的事实。

这样说,我们实际上可以使用pngcrush从图像中去除伽玛信息

pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB pear.png apple.png


没有它:



我不会真的说这是“答案”,但如果有的话,它可能是正确的方向。我敢肯定,如果有人对色彩配置文件有很多了解,就会对此做出更正式的回应。

评论


那两个图像对我来说看起来是一样的,就像问题中的原始图像一样,在苹果和梨之间闪烁。我正在使用Safari 6.0.2

–弗雷泽·格雷厄姆(Fraser Graham)
13年4月7日在6:52

请注意,此处提供的命令的最后两个元素是infile和outfile:例如pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB infile.png outfile.png。更多信息:hsivonen.fi/png-gamma

–fredrivett
17年11月19日在7:20

#3 楼

更改图像的伽玛(γ)包括在以下条件中修改伽玛值:

(R',G',B')=(Rγ,Gγ,Bγ)

给出将伽马函数应用于初始像素值(R,G,B)后的输出像素颜色(R',G',B')显示在屏幕上(考虑到R,G和B归一化在0和1)。

现在,我们以红色通道为例。
如果R = R0 + R1,您将获得R'=(R0 + R1)γ=R0γ*(1 + R1 / R0)γ

如果R0比R1大得多,则您有(1 + R1 / R0)γ≈1 +γR1/ R0,
所以R'≈R0γ+γR1* R0γ-1

这意味着对于接近0的伽玛,R0γ占主导地位。对于γ= 1,您得到R'≈R0 + R1

对于较大的伽玛,第二项占主导地位,因此您可以直接设置R0 =梨的红色成分和R1 =梨的红色成分苹果,其R0远大于R1,并且在更改显示器的伽玛(或每种软件使用的特定伽玛曲线)时,您将获得所需的变化。

#4 楼

这不是四舍五入的像素,也不是ICC颜色配置文件的问题。

这是一个技巧图像,有些浏览器显示的PNG没有伽玛数据。对于这些浏览器,您会看到一件事,对于其他浏览器,您将看到完整图像(在背景中隐藏了梨)。

我看到的是苹果/梨的花招图像,或者我只是看到梨,具体取决于浏览器是否支持此伽玛数据。

#5 楼

碰巧的是,您可以在具有正确校准显示的图片中看到更多细节
,如果伽玛/亮度/对比度过高,则可以看到图片中的一张图像被隐藏了更多