Как изменить размер изображения в командной строке Linux

Изменение размера изображения в Linux удобно выполнять прямо из терминала. Такой подход особенно полезен при подготовке фотографий для сайта, уменьшении скриншотов, создании миниатюр и массовой обработке папок. Графический редактор для этого не нужен: достаточно установить подходящую утилиту и указать несколько параметров.

Самый универсальный вариант — ImageMagick. Пакет поддерживает JPEG, PNG, WebP, GIF, TIFF и десятки других форматов. С его помощью можно задать ширину или высоту, вписать картинку в определённую область, обрезать лишнее, изменить качество и удалить метаданные.

Перед обработкой стоит определить задачу. Для публикации в блоге обычно требуется сохранить пропорции, ограничить максимальную ширину и уменьшить размер файла. Для аватара или карточки товара может понадобиться точное соотношение сторон. От этого зависит команда и значение параметра -resize.

Командная строка также удобна тем, что все действия легко повторить. Один и тот же сценарий можно применить к сотням файлов, встроить в Bash-скрипт или запускать автоматически после загрузки изображений. При этом исходники лучше хранить отдельно: некоторые команды изменяют файлы непосредственно.

Установка ImageMagick В Linux

В Ubuntu, Debian и совместимых дистрибутивах ImageMagick устанавливается из стандартного репозитория:

sudo apt update
sudo apt install imagemagick

В Fedora используется другая команда:

sudo dnf install ImageMagick

Пользователям Arch Linux подойдёт:

sudo pacman -S imagemagick

После установки проверьте доступность программы:

magick --version

В старых выпусках ImageMagick основной командой может быть convert. В актуальных версиях рекомендуется использовать magick: такая форма однозначнее и удобнее для скриптов. Если система сообщает, что команда не найдена, проверьте название пакета и наличие каталога с исполняемыми файлами в переменной PATH.

Для просмотра параметров конкретной операции применяются встроенные справочные команды:

magick -help
magick resize -help

Узнать размеры и формат исходника можно через identify:

identify photo.jpg

Расширенный вывод покажет цветовую модель, глубину цвета, профиль и другие свойства:

identify -verbose photo.jpg

Базовое Масштабирование С Сохранением Пропорций

Простейшая команда уменьшает изображение до ширины 1200 пикселей:

magick photo.jpg -resize 1200 result.jpg

Высота будет рассчитана автоматически, поэтому фотография не исказится. Аналогично можно ограничить высоту:

magick photo.jpg -resize x900 result.jpg

Значение 1200x900 означает максимальную ширину 1200 и максимальную высоту 900. Картинка впишется в этот прямоугольник с сохранением исходного соотношения сторон:

magick photo.jpg -resize 1200x900 result.jpg

По умолчанию ImageMagick может увеличить маленький файл, если заданные размеры больше исходных. Для ограничения только уменьшением добавьте символ >:

magick photo.jpg -resize '1200x1200>' result.jpg

Кавычки защищают специальный символ от интерпретации оболочкой. Такой вариант особенно полезен в автоматических сценариях, где встречаются пробелы или дополнительные знаки.

Иногда требуется получить точный размер, например 300×300 пикселей. Простое изменение пропорций здесь приведёт к растяжению, поэтому лучше сначала масштабировать изображение с заполнением области, а затем обрезать края:

magick photo.jpg -resize '300x300^' \
  -gravity center -extent 300x300 avatar.jpg

Параметр ^ увеличивает изображение так, чтобы оно полностью закрыло заданную область. -gravity center выбирает центральную часть при обрезке. Вместо center можно использовать north, south, east или west, если важный объект находится ближе к одному из краёв.

Качество Формат И Размер Файла

Размер картинки в пикселях и объём файла — разные характеристики. После уменьшения фотографии стоит подобрать формат. JPEG хорошо подходит для снимков и сложных изображений с плавными переходами. PNG разумнее использовать для логотипов, схем, скриншотов с текстом и прозрачного фона. WebP часто даёт меньший файл при сопоставимом качестве.

Для сохранения результата в JPEG с заданным качеством применяется параметр -quality:

magick photo.jpg -resize 1200 -strip -quality 82 optimized.jpg

Значение 80–85 обычно подходит для публикации в интернете. Большие значения сохраняют больше деталей, но увеличивают файл; слишком низкие создают заметные блоки и цветовые артефакты. Ключ -strip удаляет EXIF и другие служебные данные, включая сведения о камере и иногда координаты съёмки.

При конвертации в WebP можно указать качество таким образом:

magick photo.jpg -resize 1200 -strip -quality 80 optimized.webp

PNG сжимается иначе, поэтому параметр качества работает не так, как у JPEG. Для уменьшения палитры или оптимизации PNG можно использовать:

magick screenshot.png -resize 1200 -strip -define png:compression-level=9 result.png

Максимальный уровень сжатия не всегда заметно уменьшает файл, зато может увеличить время обработки. Если изображение содержит прозрачность, перед конвертацией проверьте, что фон не был заменён цветом.

Задача Команда Особенность
Ограничить ширину magick in.jpg -resize 1200 out.jpg Высота рассчитывается автоматически
Вписать в область magick in.jpg -resize 1200x900 out.jpg Пропорции сохраняются
Создать квадрат magick in.jpg -resize '300x300^' -gravity center -extent 300x300 out.jpg Лишние края обрезаются
Уменьшить JPEG magick in.jpg -quality 82 out.jpg Подходит для фотографий
Удалить метаданные magick in.jpg -strip out.jpg Сокращает служебную информацию
Подготовить WebP magick in.jpg -quality 80 out.webp Часто уменьшает объём файла

При публикации материалов с изображениями полезно заранее проверить, какие данные сохраняются внутри файлов. Это особенно важно для фотографий с геометками и скриншотов, на которых случайно могут остаться имена пользователей, адреса или фрагменты личной переписки. Работа с изображениями должна дополнять общую цифровую гигиену, включая ручную очистку компьютера от неизвестных программ.

Массовая Обработка Файлов В Папке

Для пакетного уменьшения JPEG-файлов можно использовать цикл Bash. Следующий пример создаёт каталог small и сохраняет туда копии шириной до 1600 пикселей:

mkdir -p small

for file in *.jpg; do
  magick "$file" -resize '1600x1600>' -strip -quality 82 "small/$file"
done

Кавычки вокруг переменных нужны для корректной работы с именами, содержащими пробелы. Если в папке находятся файлы с расширением .JPG, .jpeg или .png, добавьте отдельные циклы либо используйте find.

Для обработки JPEG независимо от регистра расширения можно выполнить:

find . -maxdepth 1 -type f \
  \( -iname '*.jpg' -o -iname '*.jpeg' \) -print0 |
while IFS= read -r -d '' file; do
  name=$(basename "$file")
  magick "$file" -resize '1600x1600>' -strip \
    -quality 82 "small/$name"
done

Вложенные каталоги требуют более аккуратного формирования пути назначения. На первых этапах лучше запускать сценарий на копии данных и выводить список найденных файлов с помощью find, не выполняя преобразование.

Команда mogrify предназначена для массовой обработки, но по умолчанию перезаписывает исходники:

mogrify -resize '1600x1600>' -quality 82 *.jpg

Используйте её только после резервного копирования. Для безопасной работы удобнее создавать отдельную папку и сохранять результаты через цикл. Так можно сравнить исходное и изменённое изображение, проверить резкость, цвет и корректность ориентации.

Если фотографии сняты смартфоном, они могут содержать EXIF-ориентацию. Обычно ImageMagick учитывает её при чтении, однако для предсказуемого результата можно добавить -auto-orient:

magick photo.jpg -auto-orient -resize '1600x1600>' result.jpg

Частые Ошибки И Проверка Результата

Самая распространённая ошибка — указать одновременно ширину и высоту без понимания поведения параметра. Команда -resize 800x800 сохраняет пропорции, а не превращает изображение в квадрат. Для точного квадрата нужны ^ и -extent, как в примере выше.

Другой риск связан с перезаписью исходного файла:

magick photo.jpg -resize 1200 photo.jpg

Такой вызов может привести к повреждению результата при ошибке чтения или записи. Надёжнее использовать новое имя либо временную папку. Перед массовой обработкой сделайте резервную копию и протестируйте команду на одном файле.

Проверить итоговые параметры можно так:

identify result.jpg
du -h result.jpg

Первая команда покажет размеры и формат, вторая — фактический объём файла. Для визуальной проверки откройте несколько изображений в просмотрщике и убедитесь, что текст не стал размытым, прозрачность сохранилась, а важные детали не были обрезаны.

Если ImageMagick сообщает об ограничениях политики безопасности, проблема обычно связана с настройками обработки форматов или правами доступа. Не стоит бездумно отключать защиту в системном файле конфигурации. Сначала проверьте путь к файлу, разрешения и необходимость конкретного формата.

Командная обработка особенно полезна при подготовке иллюстраций для публикаций: можно привести к единой ширине снимки экрана, баннеры и изображения игровых бонусов, сохранив отдельные оригиналы для дальнейшего редактирования.

Начните с одного тестового файла, подберите размер и качество, затем перенесите рабочую команду в скрипт. Проверьте результат через identify, сравните вес файлов и только после этого обрабатывайте всю папку. Такой порядок помогает быстро уменьшить изображения, сохранить их пропорции и избежать случайной потери исходных данных.

Иконка пользователя в серых тонах

Настройка Windows

Доступ к скрытым параметрам конфигурации, отключение телеметрии, работа с диспетчером задач и тонкая настройка меню «Пуск» в стиле Windows XP для Windows 7.

Иконка браузера в серо-синих тонах

Веб-браузеры

Скрытые страницы конфигурации в Firefox, Chrome и Opera, быстрый текстовый редактор прямо в браузере, эффект Lightbox JS для изображений и настройка внешнего вида Firefox.

Иконка папки в нейтральных серых тонах

WordPress и блоги

Выполнение PHP-кода в текстовых виджетах, диагностика времени загрузки разделов страницы, правильная очистка блога и условная загрузка виджетов социальных сетей.

Изометрический 3D-рендер: светлый веб-сайт с серо-голубым заголовком, парящий над чистой белой поверхностью Изометрический 3D-рендер: тёмно-серая иконка социального букмаркинга на светлом фоне

Обратная связь

Есть вопрос или предложение по темам блога? Напишите — автор на связи.