JPEG优化的工具有哪些?

114

你知道有没有任何工具(最好是命令行)可以自动且不损失地优化JPEG,以便我可以将其集成到我们的构建环境中? 对于PNG图像,我目前正在使用PNGOUT,并且通常可以节省大约40%的带宽/图像大小。

至少,我想要一个可以从JPG中删除元数据的工具 - 我发现了一个奇怪的案例,我尝试从一张照片制作缩略图,但无法使其小于34 kB。经过进一步调查,我发现EXIF数据仍然是图像的一部分,并且在删除元数据后,缩略图只有3 kB。

此外 - 是否有可能进一步无损优化JPEG? PNG优化器尝试不同的压缩策略,Huffmann编码的随机初始化等。

我知道大多数节省来自JPEG质量参数,而且这是一个相当主观的度量标准。我只是寻找一个可以运行为构建步骤的工具,可以从图像中无损地挤出一些字节。


你是说在优化的JPG中删除EXIF之前,大约有10KB的EXIF?!?!我想知道里面有什么! - netrox
这是来自数码相机的整个EXIF块,包括有关此照片的每一个细节(曝光、快门时间等...)。 - chris166
@netrox chris166 这些细节并不占用太多空间,占用大量空间的是预览(二进制数据)。 - Ariel
1
两篇有趣的比较文章,列出了以下实用工具:JPEG无损压缩工具比较,2014年6月; JPEG优化工具基准测试,2013年2月 - dma_k
@Ariel:ICC配置文件也往往占用大量空间。我见过超过500KB的ICC配置文件二进制数据。 - saurabheights
StackOverflow怎么了?一个有110票的问题被关闭了? - Gabriel
14个回答

72

5
太棒了!先生,您需要一个Flattr按钮,或加入Gittip。 - Thilo
2
ImageOptim和ImageAlpha非常棒! - Jon z
很棒的工具-小建议。为什么要将JPEGoptim限制在80%的质量上-对于大型背景图像,您通常会想降至60%甚至更低。谢谢。 - niico
为什么要删除EXIF数据? :/ - Adriano
@AdrienBe 1. 隐私。您可能不希望网络上的每个人都知道您的GPS位置。2. 因为在从Photoshop保存的文件中,可能会嵌入兆字节的XML垃圾数据。 - Kornel
@Kornel 对,那很有道理。我不知道 Photoshop 会这样做。我应该感到惊讶吗?(摇头) - Adriano

68

我使用libjpeg进行无损操作。它包含一个命令行工具jpegtran,可以完成你想要的所有操作。使用命令行选项-copy none可以删除所有元数据,并且-optimize可以对Huffmann压缩进行无损优化。你也可以使用-progressive将图像转换为渐进模式,但这可能会导致兼容性问题(有人了解更多吗?)


5
听起来很有前途。如果有人感兴趣,Windows 的下载链接在 http://gnuwin32.sourceforge.net/packages/jpeg.htm。 - chris166
2
逐步式在基本上所有领域都能正常使用,唯一的缺点是它会使用更多的 CPU 进行解码(额外的 CPU 并不重要)。 - Ariel
1
对于小于9k的文件,渐进式通常比基准线更大。 - Collin Anderson
3
渐进式JPEG需要更多的内存才能解码。普通的JPEG可以进行流式传输:只需解码小部分即可。要解码渐进式JPEG,需要一次性将整个解压缩后的图像保存在内存中。 - jcupitt
旧版本的Adobe Flash无法加载渐进式JPEG。我们说的是6及更早版本,所以现在不应该再有这个问题了。 - NiloVelez
显示剩余5条评论

12

一项名为JPEGmini的新服务可以产生惊人的效果。可惜它只能在线使用。编辑:现在已经支持Windows和Mac操作系统。


我们现在有一款可用的Mac应用程序(声明:我是开发团队的一员) - DanJ
4
我不知道你是不是这个应用程序的作者,但这个应用程序误导了用户。如果你在他们的“迷你”图像上运行jpegquality.c来检测压缩程度,然后使用Imagemagick以相同的质量压缩原始图像=> 你会得到相同的结果,在两张图片中都会有相同的JPEG伪影。虽然Imagemagick可能是开源的,但使用它并声称你开发了新的压缩技术是不正确的。 - nice ass
@onetrickpony:我与他们没有任何关联。 - Eduardo Molteni
@niceass 你怎么知道JPEGmini正在使用ImageMagick代码?知道质量因子与IM输出相同并不是证明。我猜他们会重新压缩图像,以降低质量因子,可能会加入一些滤波,并使用某些质量度量来决定何时停止。 - koan
我在之前从ImageMagick导出的图像上运行了最新版本的JPEGmini,结果报告称已经对其运行过JPEGmini了,但我不记得这样做过。在同一张图片上运行jpegtran -optimize -copy none,可以将大小减少12 KB。 - koan

12

[仅适用于Windows]

RIOT(Radical Image Optimization Tool)是我发现的最好的图像优化工具!

http://luci.criosweb.ro/riot/

通过子采样,可以轻松将10MB的图像减少到800KB。它支持PNG、GIF和JPEG格式。它甚至集成到上下文菜单中,因此您可以直接发送图片。它允许您旋转、重新调整大小、压缩到指定的KB大小等,还有适用于GIMP、IrfanView和其他软件的插件。

如果您想将其整合到自己的程序或Java脚本/C++程序中,还有一个可用的DLL。

另一个选择是http://pnggauntlet.com/ PNGGAUNTLET需要一段时间,但效果还不错。

[仅适用于Windows]


7
警告:RIOT看起来不错,但它会在未经询问的情况下安装TuneUp和垃圾软件。我将这归类为恶意软件。 - Daniel W.
1
@DanFromGermany是正确的。在这里查看评论:http://download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList - RNickMcCandless
1
直到最近它才开始运行。 - Ben
恶意软件警报!Chrome下载管理器警告RIOT是恶意软件。 - ruhong
8
注意:RIOT有一个便携式的.zip文件,不含任何恶意软件或任何类型的安装程序。只需在他们的下载页面中向下滚动即可。http://luci.criosweb.ro/riot/download/ - Goyuix
哦糟糕,我刚刚下载了RIOT。我现在正在卸载它!O_O - Rabb-bit

10

尝试了上述多种建议-我个人想要无损压缩。

我的示例图像的原始大小为67,737字节。

使用kraken.io,它降至64,718

使用jpegtran,它降至64,718

使用yahoo smush-it,它降至61,746

使用imagemagick(-strip),它降至65,312

smush.py选项看起来很有前途,但安装对我来说太复杂了。

jpegrescan看起来也有前途,但似乎是unix的,而我正在使用windows。

jpegmini并非无损的,但我无法分辨出区别(降至22,172)

plinth的Altrasoft jpegstripper应用程序在我的Windows 7上无法工作。

jpegoptim不适用于windows - 对我没用。

Riot(将质量保持在100%)将其降至63,416,并且将色度子采样设置为高,将其降至61,912 - 我不知道那是否无损,但我认为它比原始图像看起来更轻。

因此,如果必须是无损的话,我选择yahoo smushit。


jpegrescan在Windows上运行,如果你很固执的话。它像魔术一样削减了大小(没有质量损失的情况下5-15%),这太神奇了,因为它只是重新排列渐进式扫描顺序AFAIK(您可能会在其他程序中注意到相同的情况,在Photoshop中选择不同数量的扫描时,文件有时会稍微变小,原因不明)。此外,它是由制作x264的人之一制作的,他在压缩领域是一个奇才。 - Camilo Martin

9

谢谢!我不知道ImageMagick能做到那个。 - chris166

7

ImageOptim非常流畅。作者发布的命令行选项将填充GUI并显示进度。我使用jpegtran进行优化和转换为渐进式,然后使用ImageOptim进行进一步的渐进式优化和其他文件类型。

在本论坛中还发现了脚本代码的重复使用(所有文件都被替换):

jpegtran

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.jpeg" -or -name "*.JPG" \)); do
    echo found $file for optimizing...
    jpegtran -copy comments -optimize -progressive -outfile $file $file
done

ImageOptim

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.png" -or -name "*.gif" \)); do
do
    echo found $file for optimizing...
    open -a ImageOptim.app $file
done

4
您可以使用 jpegoptim 来无损优化JPEG文件。默认情况下,--strip-all选项会剥离所有额外的嵌入信息。您还可以使用--max开关指定有损模式,这在您保存了质量非常高的图像时非常有用,但对于例如网页内容等不是必需的。
您将获得与jpegtran(请参见OutOfMemory的答案)类似的优化效果,但jpegoptim无法保存为渐进式JPEG。

4

它运行良好,但是PNG压缩存在问题 :( - user546774

4
我写了一个命令行工具叫做“picopt”(类似于ImageOptim),它使用外部程序优化JPEG、PNG、GIF、动态GIF甚至漫画书归档内容(CBR/CBZ)。
这适用于在OS X或Linux系统上使用homebrew安装jpegrescan、jpegtran、optipng、gifsicle等工具的情况。 https://github.com/ajslater/picopt

这个有 Windows 版本吗? - starbeamrainbowlabs
如果您可以在Windows环境中(如Cygwin)安装其POSIX依赖项,那么它可能会起作用。不过,您将是第一个测试它的人。 - AJ Slater

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接