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


11

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

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


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
Внимание: это заменит ваши существующие изображения.
Судо


5

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

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

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


Как бы вы изменили эту команду, чтобы перезаписать исходное изображение уменьшенным при повторном использовании find?
Саймон Ист
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.