Перебирайте папку и конвертируйте png в jpg - PullRequest
2 голосов
/ 12 июня 2019

У меня есть большая папка с изображениями разных типов файлов (jpg + png).Я хотел бы перебрать папку и конвертировать любые PNG в JPEG.Так, например, image323.png будет преобразовано в image323.jpg.

Я также хотел бы, чтобы их размеры были изменены, чтобы они все были одинакового размера без потери их масштаба / отношения.

Я знаю, что мне нужно пройтись по ним и, вероятно, использовать условное выражение (еслифайл заканчивается в png, изменится на jpg), и это будет связано с использованием PIl, но я не уверен, как все это собрать.

1 Ответ

2 голосов
/ 12 июня 2019

Самый простой способ будет с ImageMagick , который вы можете установить на macOS с homebrew :

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

В зависимости от количества имеющихся у вас образов, их размера и скорости работы вашего ЦП и дисковой подсистемы вы можете добиться большего успеха с GNU Parallel , который вы можете установить таким же образом:

brew install parallel

Команда для параллельного преобразования всех файлов PNG в JPEG затем становится:

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