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

Mic*_*hel 8 command-line jpeg batch-processing

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

nba*_*ari 11

这是命令行中使用convert ( brew info imagemagick) 将*.jpg一个目录中的所有图像转换为.png

$ for i in *.jpg; do
convert "$i" "${i%.jpg}.png"
done
Run Code Online (Sandbox Code Playgroud)

要在(试运行)之前进行测试,您可以使用echo而不是<command>

$ for i in *.jpg; do
echo "$i" "${i%.jpg}.png"
done
Run Code Online (Sandbox Code Playgroud)

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

"${i%.jpg}.png"
Run Code Online (Sandbox Code Playgroud)

双引号的使用"是针对可能包含空格的案例文件,请查看此以了解更多详细信息:shell 参数扩展

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

convert "$i" -quality 80% "${i%.jpg}-new.jpg"
Run Code Online (Sandbox Code Playgroud)

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

mogrify -quality 80% *.jpg
Run Code Online (Sandbox Code Playgroud)

主要区别在于“convert”倾向于处理单个图像,而“mogrify”用于批处理多个文件。


jun*_*dev 7

安装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将最大文件大小
-resize 400设置为 60kb将设置宽度
*.JPG适用于您所在目录中的所有文件.

有许多附加命令可以与 imagemagick convert 和 mogrify 一起使用。安装后,您可以使用man mogrify来查看可以链接到它的命令。

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