令我感到困惑的是 - 为什么this image在每个浏览器中都显示不同?
IE9(和Windows照片查看器)中的图像:
Firefox(和Photoshop)中的图像:
Chrome中的图片(和Irfanview):
JPEG的解码过程中发生了什么,使最终输出变得如此不同?
(在IE,Firefox,Chrome等中查看,看看我的意思。)
答案 0 :(得分:6)
JPEGSnoop(源现在可用@ sourceforge)在我们进行Y'CbCr到RGB转换之前报告大亮度溢出。我在其他一些文件上得到这些错误,但溢出通常很小 - 256或257,最大值为255.这里计算的亮度为729!
JPEGSnoop的作者对YCC溢出的评论:
DC中的YCC削波 - 每个MCU添加或 从DC(平均值)中减去 在之前的MCU中。这些应该都是 保持在8位范围内,但是 DC系数的腐败可能 导致这个值徘徊 范围。这种类型的错误会导致 突然大规模的颜色变化或 图像中的亮度。作为这种类型 错误一般不会恢复, JPEGsnoop只会报告第一个 其中10个在日志文件中。
我不熟悉MCU间的DC,但是Pennebaker& amp;米切尔concur。
*** Decoding SCAN Data ***
OFFSET: 0x00000160
Scan Decode Mode: Full IDCT (AC + DC)
Scan Data encountered marker 0xFFD9 @ 0x00027CA9.0
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 729, 109, 171) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 682, 109, 172) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 741, 109, 173) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 629, 109, 174) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 841, 109, 175) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 319, 109, 176) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 928, 109, 177) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 0, 0) YCC=( 624, 109, 177) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 1, 0) YCC=( 785, 107, 171) Y Overflow @ Offset 0x00027CA8.2
*** NOTE: YCC Clipped. MCU=( 1, 0) YCC=( 559, 107, 171) Y Overflow @ Offset 0x00027CA8.2
Only reported first 10 instances of this message...
答案 1 :(得分:2)
JPEG可以用RGB或CMYK编码。这些特点通常发生在它的CMYK时。在图像编辑程序中打开文件并将其保存为RGB JPEG,并向CMYK打印机致敬,这些打印机现在将具有您之前在浏览器中获得的不同结果。
答案 2 :(得分:1)
我只是在猜测 如果图像是为了显示这些差异而创建的,那么它可能不是正常的编码图像,而是一个无效的图像,其中计算的颜色在0到255范围之外,不同的解码器处理这些不同。
答案 3 :(得分:1)
例如,如果在Photoshop中将特定图像的颜色配置文件从CMYK更改为sRGB,则在所有浏览器中它或多或少都会显得相同。