7

有些事情让我感到困惑 - 为什么这张图片在每个浏览器中看起来都不一样?

IE9(和 Windows 照片查看器)中的图像:
IE9 中的图像

Firefox(和 Photoshop)中的图像:
Firefox 中的图像

Chrome(和 Irfanview)中的图像:
Chrome 中的图片

他们的 JPEG 解码过程中发生了什么使最终输出如此不同?

(在 IE、Firefox、Chrome 等中查看它以了解我的意思。)

4

4 回答 4

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...
于 2011-02-17T22:38:17.813 回答
2

JPEG 可以用 RGB 或 CMYK 编码。这些细节通常发生在 CMYK 时。在图像编辑程序中打开文件并将其另存为 RGB JPEG,然后向 CMYK 打印机致敬,它现在将获得与之前在浏览器中不同的结果。

于 2010-10-14T21:56:46.643 回答
1

我只是猜测。
如果创建图像以显示这些差异,则它可能不是经过编码的正常图像,而是计算颜色超出 0 到 255 范围且不同解码器处理这些差异的无效图像。

于 2010-10-14T21:58:48.180 回答
1

例如,如果您在 Photoshop 中将该特定图像的颜色配置文件从 CMYK 更改为 sRGB,它在所有浏览器中的显示或多或少都是相同的。

于 2010-10-14T22:02:22.087 回答