Skip to main content

[CLI] Работа с изображениями в линуксе

ImageMagick: однострочники

Узнать размеры изображения

По вертикали:

По горизонтали:

Склейка нескольких картинок в один файл

Склеить все изображения в директории в матрицу 2х2 по 4 изображения:

Склеить 2 изображения в столбец 1х2 (по вертикали):

Склеить 2 изображения в строку 2х1 (по горизонтали):

Подписать каждое изображение в коллаже именем файла:

  • -geometry +10+10 — белые поля вокруг каждого изображения, заданные в пикселях
  • -frame 10 — 3D-рамка, пиксели
  • -label %f — подпись

Рассово-верный резайс картинок

Устаревший способ с ручным способом повышения чёткости картинки:

Растяжение гистограммы изображения (повышение цветовой чёткости)

Автоматический режим через normalize (также см. -auto-level и -auto-gamma):

Ручное задание через linear-stretch на сколько % (в пикселях) снизу и сверху подвинуть гистограмму, можно задавать два числа в формате 5%x5%, также может использоваться с модификатором -channel:

или через повышение контраста:

Тонкие подробности: https://www.imagemagick.org/Usage/color_mods/#stretching

Подмена цвета

Если у нас есть, например, QR-код после онлайн-генератора, окрашенный в стандартный черный цвет, а мы хотим выкрасить его в один из корпоративных цветов (например, для вставки в CV или на визитку), сделать это можно следующей командой:

здесь:

  • -opaque '#000' — какой цвет искать
  • -fill '#39а' — на какой подменять
  • -fuzz 0% — точность задания цвета (отклонение 0%, т.е. искать и подменять только точно совпадающий с #000 цветом)

Если у нас картинка в полутонах, то задаём выше допустимое отклонение:

Посмотреть список доступных шрифтов

именно выводимое название следует использовать для опции -font команды convert.

 

Оптимизация изображений

JPEG

Установка jpegtran:

Использование:

Второй доступный инструмент — jpegoptim:

Использование:

С данными настройками оба тула дают идентичный размер выходных файлов.

Для размещения файлов в сети желательно использовать опцию progressive, например, для jpegoptim:

PNG

Что доступно в репах:

Устанавливаем:

Жмём:

Результаты:

Тройка лидеров:

  1. pngnq (ужал ~4 раза)
  2. pngquant (ужал ~2 раза)
  3. advpng (ужал ~1.5 раза)

!Note: Однако всплыло одно но: advpng умеет оптимизировать изображения, которые по какой-то причине не ужимают ни pngnq, ни pngquant: Google PageSpeed перестал жаловаться только после дополнительного прохода по файлам утилитой advpng.

SVG

batik-svgpp

Batik SVG pretty printer — The SVG Pretty Printer lets developers «pretty-up» their SVG files and get their tabulations and other cosmetic parameters in order. It can also be used to modify the DOCTYPE declaration on SVG files

 

svgcleaner

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

!Note: поскольку удаляется информация и в выключеных/скрытых слоях, то утилиту стоит рассматривать как инструмент подготовки publishing svg-files

Зависимости:

  • libxcb-xinerama0
  • p7zip

Запуск:

 

PS: если заметка помогла Вам, поделитесь ей с друзьями или коллегами: