Изменение размера изображений в ImageMagick

Если вы когда-либо занимались программным управлением изображениями, вы, вероятно, сталкивались с библиотекой ImageMagick или ее основным ответвлением, GraphicsMagick. По сути, ImageMagick — это наиболее часто используемая программа для изменения размера изображений, их преобразования или иных манипуляций с ними в командной строке. Она предлагает библиотеки для интеграции почти в любой популярный язык программирования, и вы можете использовать ее напрямую при помощи команд mogrify и convert.

Требования

Прежде чем приступить к работе с данным мануалом, на вашем сервере следует настроить аккаунт пользователя с привилегиями sudo. Для работы мы используем сервер Ubuntu 22.04, но вы можете использовать любой другой – инструкции мануала универсальны.

Начало работы

Библиотека ImageMagick очень популярна, но обычно не предустановлена по умолчанию. Однако она широко доступна в менеджерах пакетов для всех платформ. В Ubuntu 22.04 вы можете установить ее с помощью apt.

Сначала обновите источники пакетов:

sudo apt update

Затем установите imagemagick:

sudo apt install imagemagick

Если у вас еще нет тестового изображения, на котором можно было бы потренироваться, вы можете загрузить это изображение с помощью curl и сохранить его как image.jpg:

curl https://images.prismic.io/digitalocean/0b619d51-a723-4748-997f-39ed5697a540_intro-to-cloud.jpg?auto=compress,format –output image.jpg

Изменение размера с сохранением соотношения сторон

Чтобы изменить изображение до определенных размеров, используйте команду convert с входным файлом, параметром -resize, а также указав необходимые размеры и имя файла:

convert original.png -resize 100×100 new.png

На самом деле команда не изменит изображение до точно указанных размеров. Она только подгонит размер изображения, чтобы оно помещалось в заданные параметры.

Вы также можете добавить к размерам символ ^, чтобы ImageMagick изменил размер изображения и заполнил размеры, потенциально перекрывая одну сторону.

Тогда одно из двух измерений (ширина или высота) будет масштабироваться точно, а другое будет масштабироваться пропорционально:

convert original.png -resize 100×100^ new.png

Обрезка изображения

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

convert original.png -resize 100×100^ -gravity center -extent 100×100 new.png

Примечание: Чтобы изменить изображение до произвольных размеров, игнорируя соотношение сторон, вы можете добавить символ ! (например, так 100х100!). Но в большинстве случаев вы не захотите это делать, так как это растянет изображение.

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

Изменение размера текущего изображения

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

Если вам нужно отредактировать исходный файл, вы можете вместо convert использовать команду mogrify. Команда mogrify принимает входной файл и меняет его.

Примечание: Настоятельно рекомендуем делать резервные копии любых изображений, которые вы редактируете, на случай, если вас не устроят результаты.

К примеру, так выглядит предыдущая команда с mogrify:

mogrify -resize 100×100 original.png

Изменение размера нескольких файлов

Mogrify, в отличие от convert, может обрабатывать сразу целый каталог файлов. В целом обе команды ImageMagick используют схожий синтаксис, но convert работает только с одним вводом и выводом.

Чтобы отредактировать весь каталог изображений и изменить их размер одинаковым образом, вы можете передать  команде mogrify подстановочный знак *:

mogrify -resize 100×100! ./some/path/*.png

mogrify -resize 100×100^ -gravity center -extent 100×100 *.png

Заключение

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

Читайте также: Стилизация изображения с помощью нейросети, Python3 и PyTorch

Tags:

Добавить комментарий