遍历文件夹并将png转换为jpg

Iterate through a folder and convert png to jpg

我有一个包含不同文件类型 (jpg + png) 图像的大文件夹。我想遍历文件夹并将任何 png 转换为 jpeg。因此,例如 image323.png 将转换为 image323.jpg。

我还希望调整它们的大小,使它们大小相同而不丢失 scale/ratio。

我知道我需要遍历它们并且可能使用条件(如果文件以 png 结尾,则更改为 jpg)这将涉及使用 PIl 但不确定如何将它们放在一起。

最简单的方法是使用 ImageMagick,您可以使用 homebrew:

在 macOS 上安装它
brew install imagemagick

先做个备份,然后你只需要进入有图片的目录和运行:

magick mogrify -format jpg *.png

如果您希望调整它们的大小,使它们最终都达到 600 像素宽:

magick mogrify -format jpg -resize 600x *.png

如果您希望调整它们的大小,使它们最终都达到 300 像素高:

magick mogrify -format jpg -resize x300 *.png

如果您希望调整它们的大小,使它们最终的宽度不超过 600 像素,高度不超过 300 像素:

magick mogrify -format jpg -resize 600x300 *.png

如果您希望调整它们的大小,使它们最终都恰好 600 像素宽和恰好 300 像素高,即使这意味着扭曲原始纵横比:

magick mogrify -format jpg -resize 600x300\! *.png

根据您拥有的图像数量、它们的大小以及您的 CPU 和磁盘子系统的速度,您可能会更好地使用 GNU Parallel你可以用同样的方式安装:

brew install parallel

将所有 PNG 文件并行转换为 JPEG 的命令变为:

parallel --dry-run convert {} -resize 600x {.}.jpg ::: *png