Isa*_*zag 7 jpeg cross-browser decoding
有些令我困惑的是 - 为什么这个图像在每个浏览器中都显得不同?
IE9(和Windows照片查看器)中的图像:
Firefox(和Photoshop)中的图像:
Chrome中的图片(和Irfanview):
JPEG的解码过程中发生了什么,使最终输出如此不同?
(在IE,Firefox,Chrome等中查看它,看看我的意思.)
小智 6
JPEGSnoop(源现在可用@ sourceforge)在我们进行Y'CbCr到RGB转换之前报告大亮度溢出.我在其他一些文件上得到这些错误,但溢出通常很小 - 256或257,最大值为255.这里计算的亮度为729!
JPEGSnoop的作者对YCC溢出的评论:
DC中的YCC限幅 - 每个MCU在前一个MCU中的DC(平均值)中加或减.这些应该都保持在8位范围内,但DC系数中的损坏可能导致该值偏离范围.此类错误将导致图像中颜色或亮度突然发生大幅度变化.由于此类错误通常无法恢复,因此JPEGsnoop将仅在日志文件中报告其中的前10个错误.
我不熟悉MCU之间的DC,但Pennebaker和Mitchel 同意.
*** 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...
Run Code Online (Sandbox Code Playgroud)
JPEG 可以用 RGB 或 CMYK 进行编码。这些细节通常在 CMYK 时出现。在图像编辑程序中打开文件并将其另存为 RGB JPEG,然后向 CMYK 打印机致敬,它们现在将具有与您之前在浏览器中看到的不同结果。