如何批量减少(/ Mac)JPEG图像上的文件大小?

时间:2018-06-22 09:39:41

标签: command-line jpeg batch-processing

我在Mac上有一个.JPG文件列表。我想将它们导出为每个图像占用少于500 KB的格式。 我知道如何使用“预览”应用程序一次执行一次操作。但我希望能够批量执行相同的操作,即一次处理多个文件。有没有一种命令行方法可以执行,因此我可以编写脚本并在终端中运行它? 还是我可以使用的其他方式?

4 个答案:

答案 0 :(得分:2)

这是从命令行使用convertbrew info imagemagick)将一个目录中的所有*.jpg图像转换为.png的示例:

$ for i in *.jpg; do
convert "$i" "${i%.jpg}.png"
done

要进行(空运行)测试,可以使用echo代替<command>

$ for i in *.jpg; do
echo "$i" "${i%.jpg}.png"
done

这将在目录中搜索扩展名为.jpg的文件,然后执行命令convert,将文件名$i作为参数传递,然后使用相同的文件名删除扩展名并添加新的.png,可使用以下方法完成:

"${i%.jpg}.png"

使用双引号"表示案例文件可能包含空格,请检查此以获取更多详细信息:shell parameter expansion

例如,要更改文件的质量,可以使用:

convert "$i" -quality 80% "${i%.jpg}-new.jpg"

或者如果不需要保留原件:

mogrify -quality 80% *.jpg
  

主要区别在于,“转换”通常用于处理单个图像,而“迁移”则用于批处理多个文件。

答案 1 :(得分:1)

安装ImageMagick。 (真的..它轻巧而且令人惊叹)使用Homebrew进行安装很不错。然后...

  1. 打开终端。
  2. cd [FilepathWithImages] && mogrify -define jpeg:extent=60kb -resize 400 *.JPG
  3. 等到该过程完成(如果有很多图像,可能需要几分钟)
  4. 要检查文件大小,请尝试du -sh *来查看您所在目录中每个文件的大小。

注意:*.JPG必须大写才能起作用

工作原理:
cd [yourfilepath]将导航到您想要进入的目录
&&用于链接命令
如果您要保留相同的文件名,请使用mogrify
-define jpeg:extent=60kb将最大文件大小设置为60kb
-resize 400将设置宽度
*.JPG适用于您所在目录中的所有文件。

imagemagick转换和迁移可以使用许多其他命令。安装后,您可以使用man mogrify查看可以链接到它的命令。

根据the docs,“限制最大JPEG文件大小,例如-define jpeg:extent=400KB。JPEG编码器将搜索最高压缩质量级别,从而导致输出文件的大小不超过该值从版本6.9.2-5开始也将使用-quality选项。在6.9.1-0和6.9.2-4之间,添加-quality 100以便将jpeg:extent添加到正常工作。在6.9.1-0之前,-quality设置已被忽略。“

答案 2 :(得分:0)

从Homebrew或MacPorts或从https://imagemagick.org/script/download.php#macosx安装ImageMagick。然后使用mogrify使用-define jpeg:extent = 500KB保存为JPG来处理文件夹中的所有文件。

我的桌面上的文件夹test1中有两个文件。处理会将它们放入我桌面上的文件夹test2

Before Processing:

mandril.tif 3.22428MB (3.2 MB)
zelda.png 726153B (726 KB)

cd
cd desktop/test1
mogrify -path ../test2 -format jpg -define jpeg:extent=500KB *

After Processing:

mandril.jpg 358570B (359 KB)
zelda.jpg 461810B (462 KB)

请参见https://imagemagick.org/Usage/basics/#mogrify

最后的*表示处理文件夹中的所有文件。如果只想限制为jpg,则将其更改为* .jpg。 -format表示您希望输出为jpg。

答案 3 :(得分:0)

免责声明:由于以下解决方案是“破坏性”命令,因此请注意,直接替换为质量较低的文件

现在您已经阅读了我的免责声明,我建议您获得cwebp,以便您可以下载here

您还需要使用并行sudo apt-get install -y parallel,然后创建了以下脚本:

parallel cwebp {} -resize 0 640 -m 6 -sns 100 -q 80 -preset photo -segments 4 -f 100  -o {} ::: *.jpg && /
find -name "*.jpg" | parallel 'f="{}" ; mv -- {} ${f:0:-3}webp'

640是生成的文件高度(以像素为单位),之前为0表示宽度将适应宽度和高度之间的比率。 我将质量降低到80%(-q 80),您不会发现太大的差异。

第二行查找所有已转换但仍具有错误的扩展名文件(.jpg)的文件,因此它将删除最后3个字符(jpg)并添加webp。

我从每个文件5 Mb增加到大约5万(.jpg图像为4000x4000像素),仅节省了20 Gb的存储空间。我希望你喜欢它!

如果您不想使用webp格式,则可以改用以下内容(也许您需要安装imageMagick):

parallel convert {} -resize x640 -sampling-factor 4:2:0 -strip -quality 85 \
-interlace JPEG -colorspace RGB -define jpeg:dct-method=float {} ::: *.jpg