imagemagick
- imagemagick - программы для работы с изображениями
- https://imagemagick.org/script/command-line-processing.php - актуальный 7.
- https://www.imagemagick.org/script/defines.php - занятные настроечки к командам. Типа, с каким уровнем сжатия сохранять png, какой способ ресайза использовать и прочая.
- https://imagemagick.org/Usage/ - примеры использования
- https://legacy.imagemagick.org/script/command-line-processing.php - это про старый 6, в принципе, у меня сейчас оба…
- imagemagick-6.q16 - image manipulation programs – quantum depth Q16
- imagemagick-doc - document files of ImageMagick
- identify - клёвый способ смотреть инфу о картинке. Просто
magick identify picture.ext
, и кратенько основное. Если нужно много и подробно,-verbose
. Если нужно выборочно - http://imagemagick.org/script/identify.php или file:///usr/share/doc/ImageMagick-7/www/identify.html - тама подробности. - graphicsmagick - конкуренты )
Перловые либы:
- libimage-magick-perl - Perl interface to the ImageMagick graphics routines
- libimage-magick-q16-perl - Perl interface to the ImageMagick graphics routines – Q16 version
- libimage-magick-q16hdri-perl - Perl interface to the ImageMagick graphics routines – Q16HDRI version
border
Серая рамка в 1px
convert -bordercolor "#cccccc" -border 20 input.jpg output.jpg
Возможные примеры задавания цветов: -fill blue -fill "#ddddff" -fill "rgb(255,255,255)" (кажется, не все).
Mogrify
convert и mogrify из imagemagick умеют примерно одно и то же, но mogrify, если не сказано иное, заменяет исходное изображение.
but by using the -write flag with the -set flag, one can write to files in the same directory without overwriting the original files:
mogrify -resize 80x80 -set filename:name "%t_small.%e" -write "%[filename:name]" *.jpg
As noted at http://imagemagick.org/script/escape.php, %t is the filename without extension and %e is the extension. So the output of image.jpg would be a thumbnail image_small.jpg.
Склеить две картинки, одну под другой
montage 1.jpg 2.jpg -geometry +0+0 -tile 1x2 1x2.jpg
- -tile определяет расположение.
- -geometry способствует тому, чтоб картинки разной высоты не подгонялись под размер большей.
Источник: https://forum.ubuntu.ru/index.php?topic=83366.0, проверила на опыте 2020-06-08 16:58:08 +0300.
Сепию из чб
convert image.jpg -sepia-tone 80% -modulate 90,90 result.png
Массово обработать
http://s.arboreus.com/2006/11/bash.html
Создать копии в низком разрешении из набора фотографий в высоком разрешении можно, конечно, вручную, загружая каждую фотографию в графический редактор, уменьшая и сохраняя под другим именем или в другом месте. Можно это сделать и с помощью программы convert из пакета ImageMagick:
convert -quality 90 -resize 640x640 большое-фото.jpg уменьшенное-фото.jpg
Программа convert позволяет автоматизировать многие операции обработки графики. В данном случае она
- берёт файл (большое-фото.jpg),
- уменьшает до размера 640x640 (-resize 640x640), и
- сохраняет в формате JPEG с уровнем качества 90% (-quality 90) уменьшенное изображение в файле уменьшенное-фото.jpg.
Если файлов много, можно все обработать одной командой, выполненной в каталоге с фотографиями:
mkdir lowres; for f in *.jpg ; do convert -quality 90 -resize 640x640 "$f" "lowres/${f%.jpg}-640.jpg" ; done
Что делает эта команда:
- создаёт подкаталог lowres в текущем каталоге (mkdir lowres);
- далее для всех файлов с разрешением .jpg (for f in *.jpg ; do … ; done) вызывает программу конвертации (convert), которая их уже понятным образом обрабатывает поштучно.
- и сохраняет уменьшенные изображения в подкаталоге lowres под именем с окончанием -640.jpg. Изменённые имена файлов позволят не спутать их с исходными изображениями в высоком разрешении.
Набор команд между do и done повторяется для каждого файла подходящего по шаблону *.jpg. Имя обрабатываемого файла при этом хранится в переменной f
. Запись $f
позволяет получить это имя файла, а ${f%.jpg}
отсекает (%) от имени файла окончание .jpg.
Имена файлов берутся в двойные кавычки: "\(f", "\){f%.jpg}-640.jpg" – это позволяет обрабатывать также имена файлов, содержащие пробелы.
Конструкцию «for f in шаблон ; do что сделать с каждым файлом ; done» удобно использовать и для многих других целей. Цикл. Bash. :)
Скриншот
15 секунд спать, потом скриншот всего экрана, извините за некоторую тавтологию.
sleep 15; import -window root screenshot.png
Скриншот с меню или чем-то таким — за эти 15 секунд открыть нужное.