Как изменить размер изображения в командной строке 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, сравните вес файлов и только после этого обрабатывайте всю папку. Такой порядок помогает быстро уменьшить изображения, сохранить их пропорции и избежать случайной потери исходных данных.