magick mogrify -resize 800x800 *.png меняет размер каждой картинки в папке одной командой — но mogrify перезаписывает исходники прямо в процессе, и это главная ловушка, о которой обычно не предупреждают. Дальше — как уменьшить одну картинку без искажений, двухстрочный цикл, который сохраняет результат в отдельную папку вместо порчи оригиналов, и настоящее измерение: уменьшение размеров не всегда уменьшает файл.
1. Одна картинка, с сохранением пропорций
$ clai уменьши эту картинку до 320 пикселей по большей стороне→ magick test1.png -resize 320x320 out1.jpg
320x320 — это ограничивающая рамка, а не жёсткий размер: ImageMagick сохраняет пропорции и вписывает картинку в неё. Исходник 800x600 стал 320x240.
2. Уменьшение размеров не значит уменьшение файла
$ clai сравни размер файла до и после→ identify -format '%wx%h %b\n' test1.png out1.jpg800x600 382B320x240 1188B
Это настоящее измерение, а не предположение. Картинка с плоской заливкой в PNG весила 382 байта; после уменьшения до 320x240 и конвертации в JPEG она стала весить 1188 байт — втрое больше. PNG почти идеально жмёт однотонные области, JPEG для этого не предназначен. Всегда проверяйте результат, а не считайте его само собой разумеющимся.
3. Вся папка сразу, но безопасно
$ clai уменьши все png в этой папке до 800 пикселей, оригиналы не трогай→ mkdir -p resized && for f in *.png; do magick "$f" -resize 800x800 "resized/$f"; done
Цикл с отдельным каталогом назначения. Кавычки вокруг $f обязательны — без них первое же имя файла с пробелом сломает всю обработку.
4. mogrify: быстро, но необратимо
$ clai уменьши все картинки в папке прямо на месте→ magick mogrify -resize 800x800 *.png⚠ CAUTION — overwrites originals, no undo
mogrify создан именно для пакетной обработки на месте, и именно поэтому он быстрее цикла — он не делает ничего, кроме перезаписи на том же месте. Поэтому же он и опасен: после запуска оригиналов не остаётся. Сделайте копию папки до запуска.
5. Сменить формат для всей папки
$ clai преврати все png в этой папке в jpeg с качеством 85→ magick mogrify -format jpg -quality 85 *.png
-format создаёт файлы с новым расширением рядом со старыми — исходные png остаются нетронутыми. Это единственный режим mogrify, который ничего не перезаписывает.
6. Уменьшать, но не растягивать
$ clai уменьши только те картинки, что больше 1200 пикселей→ magick mogrify -resize '1200x1200>' *.jpg
Символ > означает «только если больше». Без него мелкие картинки растянутся до 1200 и потеряют качество. Кавычки нужны, чтобы оболочка не приняла > за перенаправление вывода — самая частая ошибка с этим флагом.
Грабли
mogrifyперезаписывает исходники. Неconvert, неmagick file out, а именноmogrify. Единственное исключение — режим-format, он создаёт новые файлы.- В ImageMagick 7 команда называется
magick.convertоставлен для совместимости и в новых сборках может отсутствовать.magick mogrifyработает в обоих поколениях. -resizeбез флага увеличивает тоже. Флаги:>только уменьшать,<только увеличивать,!игнорировать пропорции,^заполнять рамку с обрезкой.
Похожие вопросы
Как обрезать по центру под точный размер? magick in.jpg -resize '400x400^' -gravity center -extent 400x400 out.jpg — сначала заполнить рамку, потом обрезать лишнее.
Как узнать размеры, не открывая файл? identify -format '%wx%h %b\n' file.jpg. Для целой папки — identify -format '%wx%h %f\n' *.jpg.
Чем ImageMagick лучше онлайн-сервиса? Файлы не уезжают наружу, нет ограничений по количеству, и одна команда обрабатывает тысячу картинок.
Читайте также
CliAI подберёт нужные флаги ImageMagick под то, что вы опишете, включая изменение размера и конвертацию формата. Установка одной строкой.