ImageMagick — консольный графический редактор

Если требуется провести массовые операции с графическими файлами, то пользуемся ImageMagick.

Установка:

apt-get install imagemagick

При этом устанавливаются следующие утилиты: display, animate, identify, convert, montage, mogrify и composite.

Мне понадобилась утилита convert. Вот некоторые нужные мне ключи, а остальное читайте в описании Здесь:

  • -colorspace Перевод в другое цветовое пространство (GRAY, OHTA, RGB, Transparent, XYZ, YCbCr, YIQ, YPbPr, YUV, CMYK). Например превратить изображение в серую палитру:
    -colorspace GRAY
  • -negate Инвертирует изображение
  • -depth Изменение разрядности изображения. Перевода в 16-битную разрядность:
    -depth 16
  • -contrast повышает контрастность
  • +contrast понижает контрастность
  • -equalize автоматическое контрастирование изображения
  • -normalize нормализация
  • -gamma Гамма-коррекция. Значения меньшие 1.0 делают изображение темнее, значения более 1.0 осветляют изображение. Обычно применяют значения от 0.8 до 2.3. Можно применять разные значения гамма-коррекции для разных цветовых каналов, например так:
    -gamma 1.7/2.3/1.2
  • -resize изменить размер изображения.
    • До точного числа пикселей. Пример:
      -resize 300x400
    • можно задать в процентах. Пример:
      -resize 150%
  • -scale более быстрый, но грубый алгоритм маштабирования, масштабирует изображение в заданном процентном соотношении.
  • -rotate поверот изображение в + — градусах
  • -channel использовать преобразования только для определенных каналов (Red, Green, Blue, Alpha, Cyan, Magenta, Yellow, Black, Opacity, Index, RGB, RGBA, CMYK, CMYKA либо сокращенно ‘R’, ‘G’, ‘B’, ‘A’, ‘O’, ‘C’, ‘M’, ‘Y’, ‘K’). Пример:
    -channel Red,Blue
    -channel RB
  • -auto-gamma автоматически регулировать гамма-уровни изображения.
  • -auto-level автоматически настройки цветовых уровней изображения.
  • -limit memory 0 -limit map 0 если выдается ошибка «convert: Insufficient memory«, значит не хватает памяти, эти ключи позволят снять ограничение на использование памяти, рекомендую использовать понижение приоритета процесса (nice).

Я использовал для осветления карт google:
nice_convert_img.sh:

nice -n5 ./convert_img.sh

convert_img.sh:

ls map_google/*.jpg \
| awk '{system ("convert -limit memory 0 -limit map 0 -normalize -normalize ./map_google/"$0" - | convert -limit memory 0 -limit map -channel Red,Green -auto-gamma - - | convert -limit memory 0 -limit map 0 -auto-gamma - -  | convert -limit memory 0 -limit map 0 -gamma 2 - ./map_google_convert/"$0)}'

Массовое изменение размера:

Все файлы в папке(*.jpg) сделать шириной 1024px:

mogrify -resize 1024 *.jpg

если требуется уменьшить только файлы ширина которых больше 1024px, а остальные не изменяются:

mogrify -resize 1024\> *.jpg

если требуется изменить высоту до 600px:

mogrify -resize x600 *.jpg

Leave a Reply