2006-09-4
gmail缩略图变色初步调查
在narkau的MSN里面提到,Gmail图片附件预览图会变色?奉命调查一下~
原帖在http://www.gseeker.com/50226711/eeaeiegmailceaeeeaeeie_40941.php
实验情况是这样,必须下载那幅特定的jpg图像,添加到gmail的附件中,预览时图片的缩略图就是橙色,而原图是蓝色。
原图压缩包HFlogo.rar,请解压后实验。
调查过程如下:
-
开始我认为是jpeg图像的exif部分有个橙色的缩略图,gmail就直接用了这个缩略图(相关参阅《名不副实: 制作一张神奇的图片》)。于是我用Exifer提取了这幅图像的exif缩略图,发现就是蓝色的。而且exif的缩略图和gmail生成的缩略图分辨率不同,可以排除这个假设。
-
问题集中到这个文件上来,猛然发现这个小幅的logo虽然是jpg格式,竟然有600K之大!动手将其另存为bmp才500K...这个就十分诡异了,而且这幅图再另存jpg也不会有变色的情况(另存后就质量调到最高也不会超过200K)。我开始怀疑是有人故意制造了这幅图。
-
细致分析图像,原图的蓝色RGB编码#0041FF,缩略图橙色编码在#FE4100附近(缩略图由于压缩比的问题,颜色不是那么单一)。很容易发现R值(red)和B(blue)值似乎发生交换。是不是编码的问题呢?可是jpg不使用RGB编码,而是YUV12,但也不能排除的UV值对调的可能。索性查阅一下jpg的编码规则(JPEG 简易文档V2.14),然后对照那个600K的文件查看二进制编码,眼睛都花了,没什么特别发现!
知识普及:颜色的RGB编码——众所周知光的颜色成分可以分为红、绿、蓝三个分量。RGB编码分别用2位16进制数表示颜色中红r绿g蓝b成分,共6位如#FF0000表示纯红,#00FF00表示纯绿,#0000FF表示纯蓝,#000000表示黑色,#FFFFFF表示白色。
至此调查没什么头绪了,gmail的图片引擎当然不会让我查看源代码,只好搞一段落。sigh...关键是在搞清600K的文件到底存了些什么,可惜没什么好的工具,jpg的编码又过于复杂555555555
ps.查阅JPEG文档时,我发现的DCT==The Discrete Cosine Transform==离散余弦变换。@@~
