用于JPEG优化的工具?

时间:2009-06-12 09:03:06

标签: optimization jpeg

您是否知道任何工具(最好是命令行)能够自动无损地优化我可以集成到构建环境中的JPEG?对于我目前正在使用PNGOUT的PNG,它通常可以节省大约40%的带宽/图像大小。

至少,我想要一个可以从JPG剥离元数据的工具 - 我注意到一个奇怪的情况,我试图从照片制作缩略图,并且不能使它小于34 kB。在进一步研究之后,我发现EXIF数据仍然是图像的一部分,删除元数据后缩略图为3 kB。

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

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

14 个答案:

答案 0 :(得分:72)

我写了一个GUI for all image optimization tools I could find,包括MozJPEGjpegoptim,用于优化霍夫曼表格,渐进式扫描以及(可选)删除不可见的元数据。

ImageOptim smushing it

如果你没有Mac,我也有一个适用于任何平台的基本web interface

答案 1 :(得分:67)

我使用libjpeg进行无损操作。它包含一个命令行工具jpegtran,可以执行您想要的任何操作。使用命令行选项-copy none,所有元数据都被剥离,-optimize执行霍夫曼压缩的无损优化。您还可以使用-progressive将图像转换为渐进模式,但这可能会导致兼容性问题(是否有人对此有更多了解?)

答案 2 :(得分:12)

[仅限WINDOWS]

RIOT(激进图像优化工具) 这是我找到的最好的图像优化工具!

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

通过二次采样,您可以轻松获得低至800KB的10MB图像。 它支持PNG,GIF和JPEG。 它甚至可以集成到上下文菜单中,因此您可以直接在那里发送图片。 允许您旋转,重新调整大小,压缩到指定的KB等。还有GIMP和IrfanView等插件。

如果要将其合并到自己的程序或java脚本/ c ++程序中,还可以使用DLL。

另一种选择是http://pnggauntlet.com/ PNGGAUNTLET需要永远,但它做得非常好。

[仅限WINDOWS]

答案 3 :(得分:11)

名为JPEGmini的新服务产生了令人难以置信的结果。 遗憾的是它只在线。 编辑:现在可用于Windows和Mac

答案 4 :(得分:10)

尝试了上面的一些建议 - 我个人是在无损压缩之后。

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

使用kraken.io,它下降到64,718 使用jpegtran,它下降到64,718 使用雅虎smush-it,它下降到61,746 使用imagemagick(-strip),它降至65,312

smush.py选项看起来很有希望,但安装过于复杂,我无法快速完成

jpegrescan看起来很有希望,但似乎是unix而我正在使用windows

jpegmini并非无损,但我无法区分(低至22,172)

plinth的Altrasoft jpegstripper应用程序无法在我的Windows 7上运行

jpegoptim不是窗户 - 对我没有好处

Riot(保持100%的质量)降低到63,416并且色度子采样设置为高,它降低到61,912 - 我不知道这是否是无损的,但我觉得它看起来更轻比原来的。

所以我的判决是雅虎smushit,如果它必须是无损的

答案 5 :(得分:9)

我会尝试Imagemagick。它有大量的命令行选项,它是免费的,并有一个很好的许可证。 http://www.imagemagick.org

似乎有一个名为Strip的选项可以帮助您: http://www.imagemagick.org/script/command-line-options.php#strip

答案 6 :(得分: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

答案 7 :(得分:4)

如果有人在看,我已经写了雅虎Smush.it的离线版本。它将无损地优化png,jpgs和gif(动画和静态):

http://github.com/thebeansgroup/smush.py

答案 8 :(得分:4)

您可以使用jpegoptim默认情况下无损地优化jpeg文件。 --strip-all选项会删除所有额外的嵌入信息。您还可以使用--max开关指定有损模式,当您使用非常高质量的设置保存图像时,此功能非常有用,例如,这不是必需的。网页内容。

您获得与jpegtran类似的优化(请参阅OutOfMemory的回答),但jpegoptim无法保存为渐进式jpeg。

答案 9 :(得分:4)

我编写了一个名为'picopt'的命令行工具(类似于ImageOptim),它使用外部程序来优化JPEG,PNG,GIFS,动画GIFS甚至漫画书存档内容(CBR / CBZ)。

这适用于OS X或Linux系统上的自制软件,你已经安装了jpegrescan,jpegtran,optipng,gifsicle等工具。

https://github.com/ajslater/picopt

答案 10 :(得分:3)

我也会推荐ImageMagick。它有一个命令行选项来删除EXIF元数据

mogrify -strip image.jpg

还有很多其他工具可以做同样的事情。

就重新压缩JPEG而言,请不要这样做。 JPEG开始时是有损耗的,因此任何形式的再压缩都只会损害图像质量。但是,如果您使用无损编码图像,则某些编码器比其他编码器做得更好。我注意到,使用Photoshop完成的JPEG一直看起来比使用ImageMagick编码时更好(尽管文件大小相同),因为complicated reasons。此外(这与您相关),我知道至少Photoshop可以将JPEG保存为优化,这意味着它们会丢弃与您可能不关心保存几KB的某些内容的兼容性。此外,请确保您没有嵌入任何颜色配置文件,并且您可以保存另外几KB。

答案 11 :(得分:2)

我建议使用http://kraken.io这是超快的webapp,它会优化你的PNG和JPEG文件,远远优于smush.it。

答案 12 :(得分:2)

我建议使用JpegOptim,它是免费的,非常好,你可以指定质量,你想要的大小......并且易于在命令行中使用。

JpegOptim

答案 13 :(得分:1)

我建议将其用于近透明度:

convert 'yourfile.png' ppm:- | jpeg-recompress -t 97 -q veryhigh -a -m smallfry -s -r -S disable - yourfile.jpg

它使用来自imagemagickjpeg-archiveconvertjpeg-recompress

两者都是开源的,适用于Windows,Mac和Linux。您可能希望根据不同的质量期望调整上述选项。