Как изменить размер всех изображений в папке (включая подпапки)?

11

У меня огромная, 12Гб, галерея на сервере, полная картинок в разных подпапках. Эти файлы слишком большие и не используются в полном разрешении. Мне нужно изменить размеры всех изображений до 820 пикселей в ширину (сохраняя пропорции). Поэтому мой вопрос - как я могу создать какой-нибудь скрипт сканирования, который будет изменять размеры всех изображений больше 820 пикселей и сохранять их обратно, перезаписывая оригинальный файл?

Надеюсь, вы можете помочь мне :-) Заранее спасибо.

G-Гор
источник
3
find . -name "*.jpg" -exec mogrify -resize 820x {} +сделаю их всех; если вы не хотите , чтобы обработать «меньше , чем 820px» из них, есть несколько вариантов здесь .
don_crissti

Ответы:

13

Инструменты ImageMagick конвертировать или mogrify будет делать эту работу.

Вы можете получить их через менеджер пакетов или источник / rpms здесь: http://www.imagemagick.org/script/binary-releases.php#unix

Основное использование:

$ mogrify -resize 820x *.jpg

Если вам нужна рекурсия:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

источник
Я не думаю, что «820px ширина (сохраняя пропорции)» означает «изменение размера до 820x820». Это скорее похоже на «820 пикселей в ширину и независимо от того, какая пропорция высока»;) Плюс, это не справляется с рекурсивностью.
Эратиэль
1
Хорошая точка зрения. Под редакцией!
Если вы хотите сделать так, чтобы размер изменялся только в том случае, если они превышают заданные размеры и при этом сохраняются соотношения, вы можете изменить его следующим образом: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex
2
Внимание: это заменит ваши существующие изображения.
Судо
Связанный: Как я могу контролировать степень сжатия mogrify? (Супер пользователь)
Marc.2377
5

Используйте, convertчтобы сделать работу.

convert -resize "1024x768>" origIMG destIMGизменит размер origIMG до 1024x768, сохраняя пропорции и изменяя размер, только если изображение больше 1024, сохраняя новое изображение в destIMG. После этого вы можете переместить destIMG в оригинал.

Используйте цикл, чтобы путешествовать по всем вашим каталогам или использовать find.

YoMismo
источник
Как бы вы изменили эту команду, чтобы перезаписать исходное изображение уменьшенным при повторном использовании find?
Саймон Ист