使用Imagemagick convert将zip中的所有图像都修复为(KB)

时间:2019-03-27 16:19:00

标签: ffmpeg imagemagick compression imagemagick-convert

我正在使用Imagemagick,我想知道如何压缩所有内部jpg张图像的zip文件,并将其尺寸更改为40K以下。

到目前为止,我已经尝试过

根据:

https://gist.github.com/rkbhochalya/d3557a9d122ab547c040af3adbd565c2

 find . -name "*.jpg" -exec convert -define jpeg:extent=40kb "{}" -sampling-factor 4:2:0 -strip -colors 16 -depth 8  -define jpeg:extent=38kb "{}" \; -exec echo "{}" \;

但是它只能将比特率和颜色降低到16可以,但是还不够。

尝试magick mogrify -strip -colors 16 -depth 8 -quality 90 assets/*.jpg

但是我仍然需要将每张图像减少到40K以下

enter image description here

谢谢

1 个答案:

答案 0 :(得分:1)

尝试使用mogrify而不是convert。它将处理目录中的所有图像。参见https://imagemagick.org/Usage/basics/#mogrify

但是,除非尺寸很小,否则您永远不会得到这样的命令来获取PNG的40K文件大小。尝试另存为JPG。 JPEG范围定义仅适用于保存为JPG。

因此,要保存为JPG,如果我将图像放在桌面上的文件夹test1中,并且想要保存到桌面上的文件夹test2中,我会这样做

var objList = new List<string[]> {
    new string[2] {"1", "first"},
    new string[2] {"1", "last"},
    new string[2] {"2", "you"},
};
var asDict = objList.ToDictionary(
    arr => arr[0],
    grp => grp.Last()
);


如果您真的想另存为PNG,则最好的方法是(或进一步减少颜色)

cd
cd desktop/test1
mogrify -path ../test2 -format jpg -strip -depth 8 -define jpeg:extent=40kb *


但是,除非您的图像的宽度和高度都非常小,否则它们都不会降至40K。您可以尝试添加-quality,但是PNG的质量值不同于JPG。参见https://imagemagick.org/script/command-line-options.php#quality

我认为另存为JPG将为您提供最好的机会。