请选择 进入手机版 | 继续访问电脑版
Mozilla

火狐社区

登录    注册

用新浪微博连接 QQ互联

使用mozjpeg打造更高效的JPEG

Felicia 千年狐妖 发表于 2014-8-7 15:19:23 | 显示全部楼层 |阅读模式 [复制链接]
6 7285

mozjpeg项目近期发布了2.1版本,致力于在保持现有主要编码器的兼容性的同时获得更高的JPEG编码效率。


现在为大家来解释一下如何使用这个工具来降低你的JPEG的大小。我们来过一遍mozjpeg的cjpeg命令行,看下具体怎么使用。



创建mozjpeg
目前并没有官方的mozjpeg二进制文件,因此用户需要自己来从头创建一个项目。下载最新发布的源代码并按照BUILDING.txt向导文档中的步骤操作即可。



在Linux和OS X上创建是非常容易的。但是在Windows上会稍微麻烦一些,不过仍然可行。mozjpeg项目在考虑未来提供二进制发布。


当你开始创建mozjpeg时,需要生成一个叫做cjpeg的命令行工具。这是mozjpeg的编码程序,编码器称作djpeg。


输入图片格式

cjpeg工具可以处理这些输入的文件类型:targa, bmp, ppm和jpg。


将JPEG文件作为输入是mozjpeg的一个新功能,这在其他项目提供的cjpeg工具中是没有的。它的加入让重压缩流程变的更加容易。摒弃将JPEG转换为BMP或是其它的方式,而是对其重编码,可以直接将JPEG传输给cjpeg编码器。



如果你希望从一个cjpeg不支持的文件类型来创建一个JPEG,来看一下ImageMagick工具。它包含了一个命令行功能叫做convert,可以在众多图片格式中来回转换。



cjpeg命令行工具的基本使用

大部分人使用mozjpeg的cjpeg采用这种简单的形式:
  1. $ cjpeg -quality80 foo.bmp > bar.jpg
复制代码


这样会从“foo.bmp”输入文件创建一个也在80质量水平的叫做“foo.jpg”的JPEG。cjpeg直接产生JPEG文件的内容,因此如果你想要写到磁盘里,可能需要pipe结果到一个带有‘>‘的文件。


选择一个质量水平

质量可以最低从0最高到100。大多数人希望能够选择一个质量值,一般在60到90之间。当然你可以使用最低值来获得自己满意的图片,因为较低的值会生成较小的图片。



下面这些图片展示了一个原始图片和用mozjpeg的cjpeg使用5个不同的质量水平编码的图片。点击可以放大。




依次是:
原图 (未压缩)
quality 90 (70KB)
quality 80 (45KB)
quality 70 (37KB)
quality 60 (29KB)
(Image courtesy of Soulmatesphotography, via Wikimedia, Creative Commons Attribution-Share Alike 3.0 Unported License)


这里我们来做一些实验。很多人都不会这样做,他们会错过一些重要的降低文件大小的方法。他们通常会想“80看起来是一个不错的折中,听说大部分人都这样做,因此我也准备这样做。”如果你不能分辨出质量77和80的图片的差别,那么你就使用80,你失去的重要的文件大小的节省和质量并没有关系。


改进的和基础的JPEG

cjpeg的mozjpeg版本会默认生成一个改进的JPEG,因为它们的文件大小会比基础的JPEG小4%左右。改进的JPEG可以以全大小显示,但是会在开始的时候有点模糊,然后在加载完成后达到全分辨率。基础的JPEG只是简单的从上到下加载。



基础:





改进:


(Image courtesy of Soulmatesphotography, via Wikimedia, Creative Commons Attribution-Share Alike 3.0 Unported License)



如果你想要生成一个基础JPEG,可以按如下操作:
  1. $ cjpeg -baseline -quality 80 foo.bmp > bar.jpg
复制代码


想要达到的指标

mozjpeg的cjpeg的一个非常酷的功能是你可以为任意四个具体质量指标进行优化:PSNR, PSNR-HVS-M, SSIM和MS-SSIM。这些指标是算法,计算了图片的质量和原始的值。更科学的说,这一般称为失真率。



这些算法在如何定义质量上有所不同,因此优化一个指标可能会影响其它的。请看2014年7月Mozilla从众多例子中进行的的有损压缩图片研究



mozjpeg默认调整PSNR-HVS-M,因此调整这项对所有指标都有利。



如果你或者你的公司决定要保住一个特定的指标,可以告诉mozjpeg的cjpeg工具你的偏好,它会为你调整相应的指标。



结论
希望此刻你已经有了一些了解,并且可以自信的开始用mozjpeg来优化你的JPEG。如遇到任何问题,请反馈给mozjpeg的github issue traker



英文原文请点击这里

点评

第一版本的仅支持win7 64位系统,更新了一下,mozjpegGUI(v0.21)版本支持XP以上32位和64位系统,需要.netframework2.0支持。更新页面:http://my.oschina.net/zhungzhi/blog/312539  发表于 2014-9-15 21:36
http://www.tzyyw.com    求支持! 泰有意-一个内涵的网站  发表于 2014-9-5 14:54
花了点时间在windos7下编译通过了,做了一个外壳程序来批量转换图片。放上来大家用用提提意见。http://yunpan.cn/QaTi5WGgmXzGQ (提取码:6d83)  发表于 2014-8-29 11:44
回复 春江一条小鱼: 请问,在OS X上怎么编译和创建?  发表于 2014-8-28 09:23
"在Linux和OS X上创建是非常容易的。但是在Windows上会稍微麻烦一些,不过仍然可行"。呵呵,得屌丝者得天下。  发表于 2014-8-27 14:46
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表