使用 Imagemagick 转换将 zip 中的所有图像减少到修复 (KB)

reduce all image in zip to be under fix (KB) using Imagemagick convert

我正在使用 Imagemagick,我想知道如何减少内部压缩所有 f.e jpg 图像并将它们的大小更改为 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 以下

谢谢,

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

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

所以为了保存为 JPG,如果我在桌面上的文件夹 test1 中有我的图像并且想保存到桌面上的文件夹 test2,我会这样做

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


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

cd
cd desktop/test1
mogrify -path ../test2 -format png -strip +dither -colors 16 -type palette -depth 8 *


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

我认为保存为 JPG 将给你最好的机会。