115

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

至少,我想要一个可以从 JPG 中删除元数据的工具——我注意到一个奇怪的案例,我试图从照片中制作缩略图,但无法将其缩小到 34 kB。多查了下,发现EXIF数据还是图片的一部分,去掉元数据后缩略图是3kB。

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

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

4

14 回答 14

72

我为我能找到的所有图像优化工具编写了一个GUI ,包括MozJPEGjpegoptim优化 Huffman 表、逐行扫描和(可选)删除不可见的元数据。

ImageOptim 搞砸了

如果您没有 Mac,我还有一个可在任何平台上运行的基本Web 界面。

于 2009-12-20T03:48:08.773 回答
68

我使用 libjpeg 进行无损操作。它包含一个命令行工具jpegtran,可以做你想做的一切。使用命令行选项-copy none,所有元数据都被剥离,并对-optimizeHuffmann 压缩进行无损优化。您也可以使用 将图像转换为渐进模式-progressive,但这可能会导致兼容性问题(有人知道更多吗?)

于 2009-06-12T13:28:55.720 回答
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]

于 2012-04-10T06:50:58.780 回答
12

一项名为JPEGmini的新服务产生了令人难以置信的结果。可惜只在网上。 编辑:它现在可用于 Windows 和 Mac

于 2011-10-07T11:19:07.900 回答
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 - 我不知道这是否是无损的,我认为它看起来比原版更轻.

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

于 2012-05-25T09:06:58.837 回答
9

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

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

于 2009-06-12T09:43:02.330 回答
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

图像优化

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
于 2013-06-06T08:55:36.053 回答
4

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

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

于 2011-06-01T11:02:29.187 回答
4

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

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

于 2010-08-24T11:03:59.473 回答
4

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

这适用于安装了 jpegrescan、jpegtran、optipng、gifsicle 等工具的 OS X 或 Linux 系统上的 homebrew。

https://github.com/ajslater/picopt

于 2013-10-29T05:47:17.043 回答
3

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

mogrify -strip image.jpg

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

就重新压缩 JPEG 而言,不要。JPEG 一开始是有损的,所以任何形式的重新压缩只会损害图像质量。但是,如果您对图像进行了无损编码,则某些编码器会比其他编码器做得更好。我注意到,由于复杂的原因,使用 Photoshop 完成的 JPEG 始终比使用 ImageMagick 编码时更好(尽管文件大小相同)。此外(这与您有关),我知道至少 Photoshop 可以将 JPEG 保存为优化的,这意味着它们会降低与您可能不关心的一些内容的兼容性,以节省几 KB。此外,请确保您没有嵌入任何颜色配置文件,并且您可以再节省几个 KB。

于 2009-06-12T10:11:31.123 回答
2

我建议使用http://kraken.io它是一个超快速的 web 应用程序,它可以比 smush.it 更好地优化你的 PNG 和 JPEG 文件。

于 2011-09-12T09:40:16.593 回答
2

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

JpegOptim

于 2013-06-06T15:46:15.907 回答
1

我可以推荐这个以获得近乎透明的效果:

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

它使用imagemagickjpeg- archive 。convertjpeg-recompress

两者都是开源的,可以在 Windows、Mac 和 Linux 上运行。您可能需要针对不同的质量期望调整上述选项。

于 2016-03-22T09:17:48.077 回答