- Изменение размера изображений в ImageMagick
- Требования
- Начало работы
- Изменение размера с сохранением соотношения сторон
- Обрезка изображения
- Изменение размера текущего изображения
- Изменение размера нескольких файлов
- Заключение
- Изменение размера изображения с помощью контекстного меню в Ubuntu и других дистрибутивах Linux
- Быстрое изменение размеров изображений с помощью контекстного меню в Linux
- ImageMagick или как сжимать изображения в ОС Linux
- Установка ImageMagick
- Команды для работы ImageMagick в терминале
- convert – изменение размера изображения
- -quality
- -resize
- -rotate
- Группировка команд
- identify – проверка информации о изображении
- Пакетная обработка изображений с помощью ImageMagick
Изменение размера изображений в ImageMagick
Если вы когда-либо занимались программным управлением изображениями, вы, вероятно, сталкивались с библиотекой ImageMagick или ее основным ответвлением, GraphicsMagick. По сути, ImageMagick — это наиболее часто используемая программа для изменения размера изображений, их преобразования или иных манипуляций с ними в командной строке. Она предлагает библиотеки для интеграции почти в любой популярный язык программирования, и вы можете использовать ее напрямую при помощи команд mogrify и convert.
Требования
Прежде чем приступить к работе с данным мануалом, на вашем сервере следует настроить аккаунт пользователя с привилегиями sudo. Для работы мы используем сервер Ubuntu 22.04, но вы можете использовать любой другой – инструкции мануала универсальны.
Начало работы
Библиотека ImageMagick очень популярна, но обычно не предустановлена по умолчанию. Однако она широко доступна в менеджерах пакетов для всех платформ. В Ubuntu 22.04 вы можете установить ее с помощью apt.
Сначала обновите источники пакетов:
Затем установите 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 поддерживает множество дополнительных опций, которые позволяют оптимизировать изображения, изменять их цвета и преобразовывать их в другие форматы.
Изменение размера изображения с помощью контекстного меню в Ubuntu и других дистрибутивах Linux
В этом материале будет дан небольшой совет, который поможет вам настроить быстрое изменение размеров изображений прямо из контекстного меню, вызываемого щелчком правой кнопки мыши.
Как же изменить размер изображения на Linux? Использовать для этого Gimp или же Shutter? А может быть терминальную утилиту ImageMagick?
Но зачем заморачиваться с запуском целого приложения ради простого изменения размера, когда есть отличный плагин для Nautilus, который позволяет сделать это в два счета.
Что такое Nautilus? Nautilus — файловый менеджер, используемый GNOME и несколькими другими средами рабочего стола. Эквивалент Windows Explorer.
Существует несколько плагинов для Nautilus, которые расширяют его возможности. Они не установлены по умолчанию, поскольку они предназначены для конкретных случаев. Пользователи могут установить их в любой удобный момент.
Один из таких плагинов для Nautilus называется Image Manipulator. Он позволяет поворачивать или изменять размер изображений, щелкнув правой кнопкой мыши на изображении и выбрав вариант поворота или изменения размера в контекстном меню.
Быстрое изменение размеров изображений с помощью контекстного меню в Linux
Перед установкой настоятельно рекомендуем удостовериться, что файловый менеджер Nautilus используется в вашей системе. Для этого вводим команду:
Если вы получите примерно такой вывод (номера могут отличаться), значит все хорошо.
Для работы плагина в системе должен быть еще один компонент. Не теряя времени, установим его:
sudo apt install imagemagick
И вот теперь пришло время для установки самого плагина, используем такую команду:
sudo apt install nautilus-image-converter
Если вы используете другие дистрибутивы Linux (Fedora, Arch и т.д), то вы должны воспользоваться аналогичной командой для установки данного плагина.
Сразу после окончания установки необходимо перезапустить Nautilus:
Теперь при вызове контекстного меню правой кнопкой мыши на изображении вы будете видеть новые опции изменения размера и поворота:
Вы можете выбрать параметры, чтобы быстро изменить размер изображения прямо из контекстного меню. Плагин представит вам несколько вариантов изменения размера изображения. Но, стоит отметить, он не сохраняет соотношение сторон.
Для удаления плагина используем такую команду:
sudo apt remove nautilus-image-converter
И потом точно также перезапускаем Nautilus.
ImageMagick или как сжимать изображения в ОС Linux
Очень долгое время я пользовался программой RIOT, но на тот период я плотно сидел на операционных системах семейства Windows. И вот на протяжении уже нескольких лет я использую ОС Ubuntu. Долгое время я работал с RIOT установленным через wine. С сегодняшнего дня я решил использовать меньше костылей и заняться вплотную изучением команд терминала Linux. На сайте программы RIOT есть ссылка на скачивание плагина для популярного редактора Gimp. Но запускать софт такого размера ради сжатия одного изображения мне крайне не хочется.
Поэтому сегодня речь пойдет об утилите ImageMagick.
ImageMagick это огромный бесплатный многоплатформенный комплекс утилит, который поддерживается многими языками программирования, и существует как отдельный комплекс. Думаю тем, кто как-то связан с веб-разработкой, с ImageMagick знаком не понаслышке.
Конечно может, кому то покажется совершенно неудобным работать с изображениям с помощью консольной утилиты. Но я в любом случае советую попробовать.
Установка ImageMagick
На данный момент моей операционной системой является Linux Ubuntu 14.04, поэтому и примеры буду приводить именно из нее. Итак перейдем к установке ImageMagick в Linux Ubuntu 14.04:
Перед тем как устанавливать этот пакет, проверьте, возможно он у вас уже есть, и какая у него версия:
Это команда проверит какая версия пакета ImageMagick установлена в вашей системе.
У меня этот пакет оказался установленным. Для тех у кого этого пакета нет, выполните следующую команду(собственно сама установка):
sudo apt-get install imagemagick
sudo apt-get install imagemagick
Команды для работы ImageMagick в терминале
Команд и утилит входящих в состав ImageMagick очень много, и описывать все я здесь не буду, так как не вижу в этом особого смысла. Ведь все есть в официальной документации, которая лежит здесь. Я покажу лишь те которые использую сам.
convert – изменение размера изображения
convert input_image> commands> out_image>
input_image – имя файла изображения, которое нужно взять за основу для работы
commands – дополнительные команды/параметры
out_image – имя изображения в которое будут сохранены все преобразования исходного
Что бы просто конвертировать изображение одного формата в другой формат, нужно сделать следующее:
-quality
Уровень сжатия изображения можно указать с помощью параметра -quality:
convert img.jpg -quality 75 img1.jpg
convert img.jpg -quality 75 img1.jpg
Вы можете указать здесь в качестве значения цифры от 1 до 100. По умолчанию используется значение 92. Я обычно для блога сжимаю с параметром 75.
-resize
Для того что бы изменить размер изображения нужно воспользоваться параметром -resize:
convert img.jpg -resize 100×150 img1.jpg
convert img.jpg -resize 100×150 img1.jpg
Здесь есть несколько схем подобного сжатия:
-resize – изменение изображения и его размеров в пикселях, с сохранением соотношения сторон
convert img.jpg -resize 100×150 img1.jpg
convert img.jpg -resize 100×150 img1.jpg
Сжатие изображения по ширине до 100px, при этом высота будет сжата пропорционально
convert img.jpg -resize 100 img1.jpg
convert img.jpg -resize 100 img1.jpg
Аналогичное предыдущему, только здесь изображение сжимается по высоте до 150px
convert img.jpg -resize ×150 img1.jpg
convert img.jpg -resize ×150 img1.jpg
-resize – изменение размеров изображения без сохранения соотношения сторон
convert img.jpg -resize 100×150! img1.jpg
convert img.jpg -resize 100×150! img1.jpg
-resize – изменение размера изображения в %(процентах)
convert img.jpg -resize 20% img1.jpg
convert img.jpg -resize 20% img1.jpg
-rotate
Для того что бы повернуть изображение существует параметр -rotate, где значение указывается в градусах:
convert img.jpg -rotate 20 img1.jpg
convert img.jpg -rotate 20 img1.jpg
Группировка команд
Самое удобное что есть – это группировка команд. То есть по сути можно сделать следующее(изменить размер, повернуть на 120 градусов, и изменить качество, еще и поменять формат с png на jpg):
convert img.png -resize 100×400 -rotate 120 -quality 75 img.jpg
convert img.png -resize 100×400 -rotate 120 -quality 75 img.jpg
identify – проверка информации о изображении
Сокращенная информация о изображении:
А та же команда с параметром -verbose выведет полную информацию о изображении.
Пакетная обработка изображений с помощью ImageMagick
Я сам ей практически и не пользуюсь. Мне чаще все таки нужно работать с отдельными изображениями. Следующая команда обработает все изображения с разрешением .png повернет их на 180 градусов и запишет в файлы с новым именем rotated-предыдущее имя файла.
for file in *.png; do convert $file -rotate 180 rotated-$file; done
for file in *.png; do convert $file -rotate 180 rotated-$file; done
В общем утилита ImageMagick очень удобна и хороша в работе. А главное она сжимает практически без потерь качества, что немаловажно. Конечно она не подойдет для тех кто терпеть не может консоль. Но я для других – очень даже ничего:)
Пользуйтесь!;)