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


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.