命令行下的图像压缩工具

73

我正在寻找一款最好的命令行工具来压缩图像(png和jpeg)。

通过谷歌搜索,我发现 trimage 可以压缩png和jpeg,但在这种情况下压缩比率很低。

我还在网上找到了 jpeg-optimizer.com 这个工具,它比trimage表现更好。能否有人帮我找到合适的工具。


https://images.guide/ 列出了许多工具,并深入探讨了几种图像格式。 - str
zopflipng --iterations=500 --filters=01234mepb input.png output.png 在一个大小为170 KB的图像上花费了一个小时,并生成了一个大小为112 KB的文件。 - user3064538
3个回答

49

我使用以下工具进行无损图像压缩:

为每个程序,我创建了两个快捷方式:

  1. 一个用于实际压缩,并显示两个文件的文件大小
  2. 一个用于替换原始文件为已压缩的文件(如果我满意,我将箭头向上,以“m”为前缀键入先前的命令,然后按回车键)。

我将此放置在我的.bashrc中:

# Image optimization tools
png() {
    pngcrush -brute "$1"{,.} && du -b "$1"{,.}
}
gif() {
    gifsicle -O "$1" -o "$1." && du -b "$1"{,.}
}
jpeg() {
    jpegtran "$1" > "$1." && du -b "$1"{,.}
}
# Just for easy access in history
mpng() {
    mv "$1"{.,}
}
mgif() {
    newsize=$(wc -c <"$1.")
    oldsize=$(wc -c <"$1")
    if [ $oldsize -gt $newsize ] ; then
        mv "$1"{.,}
    else
        rm "$1."
    fi  
}
mjpeg() {
    mv "$1"{.,}
}

注意:使用pngcrush -brute命令会输出很多信息。如果你对进度不感兴趣,可以将输出重定向到/dev/null

注意:pngcrush -brute非常冗长。如果您对进度不感兴趣,请将输出重定向到/dev/null

1
gifsicle只在新版本中使用“-O3”标志开始进行优化(目前不可用于“apt”)-请参见1.82.1版(替换您的/usr/bin/gifsicle 二进制文件为适当的文件)。我对使用它进行gif优化的笔记在这里。 - Louis Maddox
1
你的 jpegtran 命令似乎完全没有作用,它的结果是一个完全相同大小的文件。为什么你没有指定任何选项呢? - pretzlstyle
@jphollowed jpegtran 默认情况下进行优化。如果文件没有改变,则 jpegtran 无法以无损方式减小大小。 - Rob W
我喜欢pngcrush因为它可以进行无损压缩。我只需将png文件复制到临时目录中,然后在Windows中运行一个批处理文件来处理当前目录中的所有PNG文件。for /R %cd% %%f in (*.png) do ( pngcrush -reduce -brute -ow "%%~nf.png" "temp%%~nf.png" ) 然后我运行一个文件夹比较程序来查看这两个文件夹,并且视觉上文件是相同的,但我将优化后更小的文件复制到源目录中。 - Sun

39

2
为了方便使用,“advpng -4”将使用zopfli压缩算法。 - ocaptchamycaptcha

17
如果您使用Linux操作系统,可以尝试使用imagemagick套件中的mogrify工具。这个命令行工具非常方便。
例如: mogrify -resize 50% rose.jpg
mogrify -format jpg *.png

或者尝试更快的分支:http://www.graphicsmagick.org/ - Anthony Hatzopoulos

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