JpegQuality是一款用来查看jpg图片压缩参数的工具,你可以用这款软件来查看、比较JPEG文件中与质量相关的那些压缩参数。典型参数包括由量化表反推出来的压缩质量系数、颜色采样(缩水)比例等。
使用方法:
软件的使用比较简单,将需要显示压缩参数的JPEG文件拖拽过来,或点击“选择源文件”按钮选择JPEG文件,即可显示。点击“查看源文件”按钮可以用缺省图像浏览器打开此JPG文件。
如果把JpegQuality.exe与ComicEnhancerPro.exe放在同一个文件夹下,还可以从CEP中启动本软件,查看CEP当前正在处理的JPG文件的参数。
在“基本信息”下方,左侧列出了当前JPG文件中的量化表,右侧列出用IJG质量系数算出来的量化表,点击“同步”时可以强制使亮度与色度的质量系数相等。当“基本信息”中的“方差”数值比较大时,可以人工比较一下左右两侧的量化表值,实际查看究竟是偏向文件长度还是偏向保留更多细节:
量化表中的数值是用来做除数的,所以值越大,除完以后的结果越接近0,即对应的DCT分量将被圆整掉,造成部分图像信息的丢失,同时也减小了文件长度。如果量化表中的值为1则原信息将被保留。
量化表左上角对应图像中的低频部分,右下角对应高频部分 。而按照JPEG标准中引用的心理学模型,人类对低频部分的变化要比高频部分的变化更敏感,所以JPG压缩时力争保低频、扔低频,导致量化表看起来经常是左上角小于右下角。
因此,如果量化表中的值较大,尤其是左上角数值较大,则量化表设计者的意图是牺牲质量以追求压缩比,反之则是追求质量。
常见问题:
Q:JpegQuality与JPEGsnoop是什么关系?
A:在功能上JpegQuality参考了JPEGsnoop,但输出更简洁一点。不过JPEGsnoop是完全自己写的JPEG解码,其源代码看得我晕头转向,JpegQuality没那么复杂,完全是基于Independent JPEG Group(IJG,独立JPEG小组)的源代码实现JPEG参数读取。另外从量化表反推压缩时的质量系数、方差的算法是学JPEGsnoop的,而JPEGsnoop又是从IJG源代码反推出来的。
Q:查看JPEG压缩参数有什么用?
A:JPEGsnoop的作者Calvin Hass认为每一种JPEG压缩软件或固件所使用的量化表、颜色采样比例都是不同的,做成MD5后就可以当作“指纹”反推生成JPEG文件所使用的软件或固件(甚至版本号)、压缩时所选择的质量系数等,因此随便百度一下JPEGsnoop就可以看到大把用它来识别照片是否被P过的教程。但我更看重的是以下几点应用:
通过反推压缩时所使用的质量系数,可以看出生成JPEG的人是如何心狠手辣的。以PDG文件为例,总有人在网上四处嚷嚷说JPG格式的PDG文件用CEP处理后文件长度变大很多,其实原因就在于CEP中的缺省JPG质量系数是按照正常人的思维习惯设置的,而PDG的质量系数已经超越了正常人的思考范围。但如果没有量化的数据做支撑,也很难和那些小白们说清楚这件事。
通过比较不同软件、固件的压缩参数,可以大致推测不同厂家在JPEG压缩上的态度,大致推测其所生成的JPEG文件在文件长度和质量方面的差异,算是给产品选择提供一个参考。
提供查看不同软件对量化表的设置,可以了解其偏好,知道在使用软件时该如何选择参数。
通过这个软件的实现,我可以掌握从原JPEG文件中读取原始压缩系数,再重复用于此JPEG文件转存时的压缩过程的技术,保证转存出来的JPEG文件与原始JPEG文件的长度、质量变化不大。这种技术在我的软件中的具体应用参见《ComicEnhancerPro 系列教程》中的《教程十八:JPG文件长度与质量》。
Q:JpegQuality显示的参数是否能反映出JPG文件的修改历史?
A:不能。因为JPG文件中根本就没有存储历史信息,所以JpegQuality显示的都是最后一次存储JPG时所用的压缩参数。举一个极端例子,如果某个用很低的质量系数压缩的JPG文件,比如说从CX的PDG文件解码出来的JPG文件,用CEP或其它图像处理软件进行处理后又用很高的质量系数转存为JPG文件,则JpegQuality打开转存后的JPG文件显示的就是最后一次转存时所使用的较高的质量系数。
Q:JpegQuality收费吗?
A:JpegQuality是一个“友情软件”(Friendware),用户在承诺不用于商业目的,也不对文件及其附件进行任何更改的条件下,不需要为使用该软件负任何费用,最多是在某个讨论区看到我发帖子灌水时(我的ID一般是strnghrs),进去捧个人场,作为友情回报;或者在年节时发个email问声好(所以叫“友情软件”)。我承诺绝不在程序中暗藏任何商业广告、木马,但不承诺为使用JpegQuality的后果承担任何责任。如果您需要将它用于商业目的,或加入您的网站,请与我联系,否则保留追究一切责任的权利。