CLI AI

Изменить размер всех картинок в папке через терминал

2026-06-24

magick mogrify -resize 800x800 *.png меняет размер каждой картинки в папке одной командой — но mogrify перезаписывает исходники прямо в процессе, и это главная ловушка, о которой обычно не предупреждают. Дальше — как уменьшить одну картинку без искажений, двухстрочный цикл, который сохраняет результат в отдельную папку вместо порчи оригиналов, и настоящее измерение: уменьшение размеров не всегда уменьшает файл.

1. Одна картинка, с сохранением пропорций

clai
$ clai уменьши эту картинку до 320 пикселей по большей стороне→ magick test1.png -resize 320x320 out1.jpg

320x320 — это ограничивающая рамка, а не жёсткий размер: ImageMagick сохраняет пропорции и вписывает картинку в неё. Исходник 800x600 стал 320x240.

2. Уменьшение размеров не значит уменьшение файла

clai
$ clai сравни размер файла до и после→ identify -format '%wx%h %b\n' test1.png out1.jpg800x600 382B320x240 1188B

Это настоящее измерение, а не предположение. Картинка с плоской заливкой в PNG весила 382 байта; после уменьшения до 320x240 и конвертации в JPEG она стала весить 1188 байт — втрое больше. PNG почти идеально жмёт однотонные области, JPEG для этого не предназначен. Всегда проверяйте результат, а не считайте его само собой разумеющимся.

3. Вся папка сразу, но безопасно

clai
$ clai уменьши все png в этой папке до 800 пикселей, оригиналы не трогай→ mkdir -p resized && for f in *.png; do magick "$f" -resize 800x800 "resized/$f"; done

Цикл с отдельным каталогом назначения. Кавычки вокруг $f обязательны — без них первое же имя файла с пробелом сломает всю обработку.

4. mogrify: быстро, но необратимо

clai
$ clai уменьши все картинки в папке прямо на месте→ magick mogrify -resize 800x800 *.png⚠ CAUTION — overwrites originals, no undo

mogrify создан именно для пакетной обработки на месте, и именно поэтому он быстрее цикла — он не делает ничего, кроме перезаписи на том же месте. Поэтому же он и опасен: после запуска оригиналов не остаётся. Сделайте копию папки до запуска.

5. Сменить формат для всей папки

clai
$ clai преврати все png в этой папке в jpeg с качеством 85→ magick mogrify -format jpg -quality 85 *.png

-format создаёт файлы с новым расширением рядом со старыми — исходные png остаются нетронутыми. Это единственный режим mogrify, который ничего не перезаписывает.

6. Уменьшать, но не растягивать

clai
$ 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 под то, что вы опишете, включая изменение размера и конвертацию формата. Установка одной строкой.