Як створити величину зміни розміру всіх зображень у папці (включаючи підпапки)?


11

У мене величезна, 12 Гб, галерея на сервері, повна зображень у різних папках. Ці файли занадто великі і не використовуються в повному дозволі. Мені потрібно змінити розмір усіх зображень до ширини 820 пікселів (дотримуючись пропорцій). Отже, моє запитання - як я можу створити якийсь сценарій сканування, який би змінив розмір усіх зображень, більших за 820px, і зберегти їх назад, перезаписавши оригінальний файл?

Сподіваюся, ви можете мені допомогти :-) Дякую заздалегідь.


3
find . -name "*.jpg" -exec mogrify -resize 820x {} +зробить їх усі; якщо ви не хочете , щоб обробити «менше , ніж 820px» з них, є кілька варіантів тут .
don_crissti

Відповіді:


13

Інструменти ImageMagick для перетворення або змінення зроблять цю роботу.

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

Основне використання:

$ mogrify -resize 820x *.jpg

Якщо вам потрібна рекурсія:

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

Я не думаю, що "ширина 820 пікселів (дотримання пропорцій)" означає "зміна розміру до 820х820". Це скоріше схоже на "820 пікселів в ширину і будь-яка пропорція - висока";) Плюс це не справляється з рекурсивністю.
Ератьєль

1
Влучне зауваження. Відредаговано!

Якщо ви хочете зробити так, щоб він міняв розміри лише у тому випадку, якщо вони перевищують встановлені розміри і все-таки зберігають співвідношення, ви можете змінити це на це: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex

2
Застереження. Це перезаписать наявні зображення.
SUDO


5

Використовуйте convertдля виконання роботи.

convert -resize "1024x768>" origIMG destIMGбуде змінювати розмір originIMG до 1024x768, зберігаючи співвідношення сторін і змінювати розмір, лише якщо зображення перевищує 1024, зберігаючи нове зображення у destIMG. Після цього ви можете перемістити destIMG до оригіналу.

Використовуйте цикл, щоб пересуватися через усі ваші каталоги чи користуватися find.


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