Cross browser JPEG文件解码中的跨浏览器不兼容?
有些事情让我困惑——为什么每个浏览器中的显示都不一样 IE9(和Windows照片查看器)中的图像:Cross browser JPEG文件解码中的跨浏览器不兼容?,cross-browser,jpeg,decoding,Cross Browser,Jpeg,Decoding,有些事情让我困惑——为什么每个浏览器中的显示都不一样 IE9(和Windows照片查看器)中的图像: Firefox(和Photoshop)中的图像: Chrome(和Irfanview)中的图像: 他们对JPEG的解码过程中发生了什么,使得最终的输出如此不同 (在IE、Firefox、Chrome等中查看,了解我的意思。)JPEG可以用RGB或CMYK编码。这些异常通常发生在CMYK时。在图像编辑程序中打开文件并将其另存为RGB JPEG,向CMYK打印机致敬,它现在将具有与您以前在浏览
Firefox(和Photoshop)中的图像:
Chrome(和Irfanview)中的图像:
他们对JPEG的解码过程中发生了什么,使得最终的输出如此不同
(在IE、Firefox、Chrome等中查看,了解我的意思。)JPEG可以用RGB或CMYK编码。这些异常通常发生在CMYK时。在图像编辑程序中打开文件并将其另存为RGB JPEG,向CMYK打印机致敬,它现在将具有与您以前在浏览器中获得的不同结果。我只是猜测。
如果图像是为了显示这些差异而创建的,那么它可能不是经过编码的普通图像,而是一个无效图像,其中计算的颜色超出了0到255的范围,并且不同的解码器处理这些颜色的方式不同。例如,如果在Photoshop中将特定图像的颜色配置文件从CMYK更改为sRGB,它在所有浏览器中的显示或多或少都是相同的。(source now available@sourceforge)报告说,在我们实现Y'CbCr到RGB的转换之前,luma溢出过大。我在其他一些文件上遇到这些错误,但溢出通常很小-256或257,而最大值为255。这里计算的luma是729 JPEGSnoop作者对YCC溢出的评论: YCC直流限幅-每个MCU添加或 从DC(平均)值中减去 在上一个MCU中。这些都应该 保持在8位范围内,但是 DC系数中的损坏可能会导致 使该值偏离设定值 范围这种类型的错误将导致 颜色或颜色的突然大范围变化 图像中的亮度。像这样 错误的数量通常不会恢复, JPEGsnoop将只报告第一个 日志文件中有10个 我不熟悉国际米兰,但佩内贝克和米切尔
有趣的是,我不知道这会有什么不同。然而,Photoshop报告说这张图片是RGB颜色空间而不是CMYK。当我第一次下载你的图片()时,我发誓它是我Photoshop中的CMYK:-)。如果您保存它,然后用浏览器测试它,它将再次显示正常。PS:我的答案似乎与我之前5分钟的“困惑”相似。这似乎是有道理的,因为它似乎显示了非常有限的颜色范围,并区分了8x8块中的各个像素。至少根据Photoshop,这一块似乎被编码为RGB。无论如何,将其复制粘贴到新图像并保存。这可能解决了你的问题。如果没有,尝试另一个图形程序。没关系,这不是问题,更多的只是好奇:)谢谢你的回答!它现在在Chrome中看起来不同了;)
*** 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...