zaLinux.ru

Как добавить текст на изображения в ImageMagick


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

Вывод текста в ImageMagick, с одной стороны, очень гибок и позволяет настроить любые параметры текста, а с другой стороны из-за такой гибкости является несколько запутанным, поскольку для настройки текста предусмотрено большое количество опций.

Добавление надписи в ImageMagick возможно с помощью:

  • label: — тип изображения, предназначенный для создания файлов представляющих собой надписи или для добавления надписей на изображения
  • caption: — ещё один тип изображения, отличием от label: является то, что вместо увеличения размера текста до указанного параметра «-size» оно переносит любые длинные строки, которые не вписывается в указанную ширину «-size». То есть длинный текст разбивается на строки.
  • text: — ещё один тип изображения, цель которого переводить большие тексты в графический формат.
  • -draw — опция, которая даёт команду нарисовать тот или иной графический примитив. Среди графических примитивов присутствует и текст. В настоящее время в качестве вывода текста несколько утратила актуальность по причине добавления следующей опции.
  • -annotate — ещё одна опция, предназначена для удобного добавления текста на изображение. Эта опция использует -draw, и автором программы предполагается как более лёгкая и более мощная альтернатива этой опции.

Кроме названых опций, также можно отметить опции, которые в первую очередь отвечают за метаданные, но иногда их значение также выводится вместе с картинкой:

  • -label
  • -comment
  • -caption

Что использовать для вывода текста на изображения в ImageMagick - label:, caption: или -annotate?

Для добавления надписи на изображение в выборе между -annotate и -draw воспользуемся советом автора программы и будем использовать -annotate.

Что касается label: и caption:, то эти изображения также имеют некоторые преимущества. Например, caption: умеет распределять длинный текст на строки так, чтобы он поместился в определённую область. А label: умеет подбирать размер шрифта так, чтобы он лучше всего вписывался в заданный размер.

Но при всех своих возможностях по своему типу label: и caption: это всё-таки изображения, поэтому при добавлении текста на них он имеет фон. Впрочем, при желании фон можно сделать прозрачным.

Опция -annotate также может вывести текст с указанным цветом фона, но по умолчанию она выводит только текст без какого-либо фона.

Все три варианта (label:, caption: и -annotate) могут показывать многострочный текст, но только caption: умеет автоматически распределять текст на несколько строк.

В общем, более универсальным вариантом, когда на картинку нужно добавить текст, представляется -annotate.

Варианты label: и caption: лучше всего подойдут когда нужно добавить подпись не на само изображение, а под ним или над ним, или даже на изображение, но на фоне и в пределах указанного размера. Также label: и caption: удобны когда вам нужно создать новое изображение, состоящие из надписи, например, кнопку для веб-интерфейса.

Опции для -annotate

В этом разделе собраны все опции, которые влияют на текст, показываемый с помощью -annotate. Далее каждая из опций рассмотрена более подробна и даны примеры её использования, а данный раздел можно использовать в качестве краткой справки чтобы быстро найти нужную опцию.

Если какая-либо опция, имеющая отношение к -annotate, пропущена, то напишите об этом в комментариях.

  • -pointsize. Размер шрифта.
  • -font. Название шрифта.
  • -family. Семейство шрифтов.
  • -fill. Цвет шрифта.
  • -stroke. Цвет обводки.
  • -strokewidth. Толщина обводки.
  • -style. Стиль, например, курсив, косой, нормальный.
  • -undercolor. Цвет фона.
  • -gravity. Устанавливает начало координат.
  • -weight. Толщина шрифта, которая пытается примениться к семейству шрифтов.
  • -antialias. Включает и отключает сглаживание.
  • -kerning. Расстояние между двумя буквами.
  • -interword-spacing. Расстояние между двумя словами.
  • -interline-spacing. Расстояние между двумя строками.
  • -stretch. Устарела и удалена.
  • -text-font. Устарела и удалена.

Как в командной строке Linux добавить текст на изображение

Для добавления текста используйте опцию -annotate {+-}tx{+-}ty TEXT

В этой строке:

  • {+-}tx — смещение в пикселях по горизонтали от центра гравитации (по умолчанию от верхнего левого угла)
  • {+-}ty — смещение в пикселях по вертикали от центра гравитации (по умолчанию от верхнего левого угла)
  • TEXT — текст для добавления на изображение

Следующая команда добавит на фотографию надпись zaLinux.ru сместив её от левой границы на 20 пикселей и от верха на 50 пикселей:

magick IMAGE.jpg -annotate +20+50 'zaLinux.ru' test40.jpg

По умолчанию текст имеет чёрный цвет и очень маленький размер шрифта. Поэтому если вы не видите текст, то переходите к следующей опции.

Как в ImageMagick поменять размер шрифта

Для изменения размера используйте опцию -pointsize РАЗМЕР.

Пример команды:

magick IMAGE.jpg -pointsize 72 -annotate +20+50 'zaLinux.ru' test40.jpg

Как поменять цвет шрифта в ImageMagick

Для смены цвета шрифта используйте опцию -fill ЦВЕТ. Этот параметр принимает имя цвета, шестнадцатеричный цвет или числовую спецификацию RGB, RGBA, HSL, HSLA, CMYK или CMYKA. Посмотреть имена всех цветов вы можете в разделе Как указать цвет в ImageMagick.


Заключите спецификацию цвета в кавычки, чтобы "#" или круглые скобки не интерпретировались вашей оболочкой.

Цвета можно указывать в следующем формате (список неполный, больше подробностей смотрите по предыдущей ссылке):

  • -fill blue
  • -fill "#ddddff"
  • -fill "rgb(255,255,255)"

Пример команды, которая напишет на фотографии IMAGE.jpg текст 'zaLinux.ru' размером 72 pt и цветом DarkViolet, текст будет помещён с отступом 500 пикселей от левого края изображения и 450 пикселей от верхнего края, файл с надписью будет сохранён с именем test40.jpg:

magick IMAGE.jpg -pointsize 72 -fill DarkViolet -annotate +500+450 'zaLinux.ru' test40.jpg

Как поменять шрифт в ImageMagick

Для выбора шрифта используйте опцию -font НАЗВАНИЕ ШРИФТА. Эта опция установит шрифт, который будет использоваться при аннотировании изображений текстом или создании меток.

Полный список шрифтов покажет команда:

magick -list font

Для каждого шрифта будет выведена информация из нескольких строк, строка с именем шрифта начинается на «Font:». Именно это имя нужно использовать с опцией -font.

В дополнение к шрифтам, указанным в предварительно определённом списке выше, вы также можете указать шрифт из определённого источника. Например, Arial.ttf — это файл шрифта TrueType, ps:helvetica — шрифт PostScript, а x:fixed — шрифт X11.

Чтобы указать явное имя файла или коллекции шрифтов, укажите путь к шрифту, которому предшествует символ @, например, @arial.ttf. Вы можете указать индекс начертания шрифта для коллекций шрифтов, например, @msgothic.ttc[1].

В следующей команде добавлена надпись с использованием шрифта Utopia-Regular:


magick IMAGE.jpg -font Utopia-Regular -pointsize 72 -fill DarkViolet -annotate +500+450 'zaLinux.ru' test41.jpg

Результат выполнения следующей команды

magick IMAGE.jpg -font Utopia-Regular -pointsize 72 -fill DarkViolet -annotate +500+150 'zaLinux.ru' -font Ubuntu -pointsize 72 -fill DarkViolet -annotate +500+250 'zaLinux.ru' -font Cormorant-Unicase-Bold -pointsize 72 -fill DarkViolet -annotate +500+350 'zaLinux.ru' -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +500+450 'zaLinux.ru' -font Liberation-Serif -pointsize 72 -fill DarkViolet -annotate +500+550 'zaLinux.ru' test41.jpg

Как указать семейство шрифтов

Опция -family СЕМЕЙСТВО ШРИФТОВ устанавливает семейство шрифтов для текста.

Этот параметр предлагает семейство шрифтов, которое ImageMagick должен попытаться использовать для рендеринга текста. Если семья может быть найдена, она используется; если нет, подставляется шрифт по умолчанию (например, «Arial») или семейство, известное как похожее (например, «Courier» может использоваться, если «System» запрошен, но не найден). Обратите внимание, что семейство может быть списком шрифтов в стиле CSS.

Если имя СЕМЕЙСТВА ШРИФТОВ содержит пробелы, то поместите его в кавычки, например, в следующей команде указано семейство шрифтов URW Gothic:

magick IMAGE.jpg -family 'URW Gothic' -pointsize 72 -fill DarkViolet -annotate +500+450 'zaLinux.ru' test42.jpg

Как сделать обводку текста

С помощью двух опций -stroke ЦВЕТ ОБВОДКИ и -strokewidth ТОЛЩИНА ОБВОДКИ вы можете указать цвет и толщину обводки текста.

К примеру, в следующей команде выбран текст шрифта DarkViolet, в качестве цвета обводки выбран black, толщина обводки установлена на 3:

magick IMAGE.jpg -stroke black -strokewidth 3 -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +500+550 'zaLinux.ru' test43.jpg

Результат выполнения команды (показаны обводки шириной от 1 до 5):

magick IMAGE.jpg -stroke black -strokewidth 1 -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +650+50 'zaLinux.ru' -stroke black -strokewidth 2 -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +650+150 'zaLinux.ru' -stroke black -strokewidth 3 -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +650+250 'zaLinux.ru' -stroke black -strokewidth 4 -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +650+350 'zaLinux.ru' -stroke black -strokewidth 5 -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +650+450 'zaLinux.ru' -stroke black -strokewidth 6 -font Times-New-Roman -pointsize 72 -fill DarkViolet -annotate +650+550 'zaLinux.ru' test43.jpg

Как сделать шрифт наклонным, курсивным или косым

С помощью опции -style можно указать стиль шрифта, доступны следующие варианты:

  • Any
  • Italic
  • Normal
  • Oblique

Вывести полный список стилей можно командой:

magick -list style

Результат выполнения команды

magick IMAGE.jpg -style Any -family 'Times New Roman' -pointsize 72 -fill DarkViolet -annotate +650+150 'zaLinux.ru' -style Italic -family 'Times New Roman' -pointsize 72 -fill DarkViolet -annotate +650+250 'zaLinux.ru' -style Normal -family 'Times New Roman' -pointsize 72 -fill DarkViolet -annotate +650+350 'zaLinux.ru' -style Oblique -family 'Times New Roman' -pointsize 72 -fill DarkViolet -annotate +650+450 'zaLinux.ru' test44.jpg

Как поменять цвет фона надписи

Для смены фона используйте опцию -undercolor ЦВЕТ.

Посмотреть имена всех цветов вы можете в разделе Как указать цвет в ImageMagick.

Пример команды:

magick IMAGE.jpg -undercolor Red -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +650+150 'zaLinux.ru' test45.jpg

Как изменить точку отсчёта координат

В предыдущих командах координаты отсчитывались от левого верхнего угла. С помощью опции -gravity ТИП вы можете выбрать другую область в качестве начала координат.

Доступны следующие значения в качестве ТИПА:


  • None
  • Center
  • East
  • Forget
  • NorthEast
  • North
  • NorthWest
  • SouthEast
  • South
  • SouthWest
  • West

Результат выполнения команды:

magick IMAGE.jpg -gravity None -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'None' -gravity Center -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'Center' -gravity East -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'East' -gravity Forget -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'Forget' -gravity NorthEast -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'NorthEast' -gravity North -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'North' -gravity NorthWest -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'NorthWest' -gravity SouthEast -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'SouthEast' -gravity South -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'South' -gravity SouthWest -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'SouthWest' -gravity West -pointsize 60 -fill DarkViolet -font Liberation-Serif -annotate +0+0 'West' test46.jpg

Как включить или отключить сглаживание при добавлении надписей

С помощью опций -antialias и +antialias можно включить/выключить отрисовку пикселей сглаживания при рисовании шрифтов и линий.

По умолчанию объекты (например, текст, линии, полигоны и т. д.) сглаживаются при рисовании, то есть опция -antialias используется по умолчанию и указывать её специально не нужно.

Используйте +antialias, чтобы отключить добавление сглаживающих краевых пикселей. Это уменьшит количество цветов, добавляемых к изображению, до тех, которые непосредственно рисуются. То есть при рисовании таких объектов не добавляются смешанные цвета.


В следующей команде включено сглаживание надписи (опция -antialias подразумевается по умолчанию и может быть пропущена):

magick IMAGE.jpg -antialias -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +650+150 'zaLinux.ru' test47.png

В этой команде отключено сглаживание надписи:

magick IMAGE.jpg +antialias -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +650+150 'zaLinux.ru' test48.png

В моих тестах опция +antialias либо не работает с форматом JPG, либо в результате особенностей сжатия этого формата (с потерями) отмена сглаживания незаметна.

Результат отключения сглаживания хорошо виден в фотографии формата PNG. Различия видны как без увеличения, так и при увеличении изображения. Без увеличения надпись кажется неестественно резкой. При сильном увеличении при отключении сглаживания видно, что отсутствуют переходные пиксели.

При включении сглаживания видны переходные пиксели, цвета которых отличаются как от цвета надписи, так и от фона.

Как установить толщину шрифта

С помощью опции -weight можно указать толщину шрифта, которая пытается примениться к семейству шрифтов.

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

Thin	То же самое, что и 100
ExtraLight	То же самое, что и 200
Light	То же самое, что и 300
Normal	То же самое, что и 400
Medium	То же самое, что и 500
DemiBold	То же самое, что и 600
Bold	То же самое, что и 700
ExtraBold	То же самое, что и 800
Heavy	То же самое, что и 900

Полный список вариантов для данной опции вы можете просмотреть командой:

magick -list weight

Пример работы следующей команды

magick IMAGE.jpg -weight 100 -family 'Ubuntu' -pointsize 72 -fill DarkViolet -annotate +500+70 'zaLinux.ru' -weight 300 -family 'Ubuntu' -pointsize 72 -fill DarkViolet -annotate +500+170 'zaLinux.ru' -weight 500 -family 'Ubuntu' -pointsize 72 -fill DarkViolet -annotate +500+270 'zaLinux.ru' -weight 700 -family 'Ubuntu' -pointsize 72 -fill DarkViolet -annotate +500+370 'zaLinux.ru' -weight 900 -family 'Ubuntu' -pointsize 72 -fill DarkViolet -annotate +500+470 'zaLinux.ru' test49.jpg

Как можно понять, в зависимости от указанного «веса» выбирается один из вариантов шрифтов (Light, Normal, Semi-Bold, Bold), который больше всего подходит. Нужно помнить, что не для всех шрифтов существуют версии, поэтому для некоторых шрифтов результат будет одинаковым независимо от того, что указано с опцией -weight.

Также если вместо опции -family указать конкретный шрифт с помощью опции -font, то независимо от значения -weight надпись всегда будет выглядеть одинаковой, поскольку в случае с -family делается выбор из нескольких шрифтов, а в случае с -font всегда применяется один шрифт.

Как изменить расстояние между буквами

С помощью опции -kerning можно указать расстояние между двумя буквами.

Пример выполнения команды

magick IMAGE.jpg -kerning 5 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +250+70 'zaLinux.ru' -kerning 10 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +250+160 'zaLinux.ru' -kerning 15 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +250+250 'zaLinux.ru' -kerning 20 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +250+340 'zaLinux.ru' -kerning 25 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +250+430 'zaLinux.ru' -kerning 30 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +250+520 'zaLinux.ru' test50.jpg

Как изменить расстояние между словами

С помощью опции -interword-spacing вы можете установить расстояние между двумя словами.

Пример выполнения команды:

magick IMAGE.jpg -interword-spacing 5 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +50+70 'zaLinux.ru and HackWare.ru' -interword-spacing 20 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +50+160 'zaLinux.ru and HackWare.ru' -interword-spacing 35 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +50+250 'zaLinux.ru and HackWare.ru' -interword-spacing 50 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +50+340 'zaLinux.ru and HackWare.ru' -interword-spacing 65 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +50+430 'zaLinux.ru and HackWare.ru' -interword-spacing 80 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +50+520 'zaLinux.ru and HackWare.ru' test51.jpg

Указанное в качестве расстояние значение может быть как положительным, так и отрицательным.

Как изменить расстояние между строками

С помощью опции -interline-spacing вы можете установить расстояние между двумя строками.

Указанное в качестве расстояние значение может быть как положительным, так и отрицательным.

magick IMAGE.jpg -interline-spacing -30 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +50+70 'zaLinux.ru\nand\nHackWare.ru' -interline-spacing 50 -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +550+270 'zaLinux.ru\nand\nHackWare.ru' test52.jpg

Как добавить текст под наклоном на фотографию

Сделать текст наклонным можно с помощью дополнительных аргументов опции -annotate.

Опция может применять со следующим набором аргументов:

  • -annotate ГРАДУСЫ TEXT
  • -annotate X_ГРАДУСЫxY_ГРАДУСЫ TEXT
  • -annotate X_ГРАДУСЫxY_ГРАДУСЫ{+-}tx{+-}ty TEXT
  • -annotate {+-}tx{+-}ty TEXT

В этих строках:

  • ГРАДУСЫ — угол поворота всего текста, без искажений
  • X_ГРАДУСЫ — угол сдвига правого края текста относительно левого края текста
  • Y_ГРАДУСЫ — угол сдвига верхнего края текста относительно нижнего края текста
  • {+-}tx — смещение в пикселях по горизонтали от центра гравитации (по умолчанию от верхнего левого угла)
  • {+-}ty — смещение в пикселях по вертикали от центра гравитации (по умолчанию от верхнего левого угла)
  • TEXT — текст для добавления на изображение

Во всех предыдущих примерах использован только один синтаксис: -annotate {+-}tx{+-}ty TEXT

Пример выполнения команды:

magick IMAGE.jpg -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate 0x0+25+70 '1. zaLinux.ru' -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate 0x50+125+170 '2. zaLinux.ru' -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate 50x0+225+270 '3. zaLinux.ru' -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate 50x30+425+270 '4. zaLinux.ru' -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate 50x+625+270 '5. zaLinux.ru' test53.jpg

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

Как вставить многострочный текст

Многострочный текст можно вставить различными способами. ImageMagick понимает символ «\n» в качестве символа перевода строки:

magick IMAGE.jpg -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +125+270 'zaLinux\n.\nru' test54.jpg

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

magick IMAGE.jpg -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +125+270 'zaLinux
.
ru' test54.jpg

Также можно заранее создать файл с многострочной записью. Если перед записью поставить символ @, то программа попытается найти и прочитать данный файл. В следующей команде надпись на фотографию будет добавлена из файла mytext.txt:

magick IMAGE.jpg -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +125+270 @mytext.txt test54.jpg

Для чтения стандартного ввода используйте конструкцию @-

Результат выполнения команды:

magick IMAGE.jpg -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +125+270 'zaLinux\n.\nru' -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +425+270 'zaLinux
.
ru' -pointsize 72 -fill DarkViolet -font Liberation-Serif -annotate +725+270  @mytext.txt test54.jpg

Как использовать label: и caption: для добавления изображения

Напомним о сущности label: и caption:

  • label: — тип изображения, предназначенный для создания файлов представляющих собой надписи или для добавления надписей на изображения
  • caption: — ещё один тип изображения, отличием от label: является то, что вместо увеличения размера текста до указанного параметра «-size» оно переносит любые длинные строки, которые не вписывается в указанную ширину «-size». То есть длинный текст разбивается на строки.

Пример создания изображения с текстом:

magick -background lightblue -fill DarkViolet -font Utopia-Regular -pointsize 72 label:ZaLinux.ru label.png

Вместо указания размера с помощью опции -pointsize, можно указать размер изображения (ширину и высоту, либо только ширину) с помощью опции -size:

magick -background lightblue -fill DarkViolet -font Utopia-Regular -size 300 label:ZaLinux.ru label-size.png

Можно использовать опции -pointsize и -size одновременно, но тогда размер надписи и изображения могут не совпасть.

Могут использоваться любые из рассмотренных выше опций для установлении свойств шрифта и надписи.

label: и caption: поддерживают многострочный ввод.

Если вы хотите добавить надпись к изображению с помощью label: или caption:, то используйте опции из статьи «Как наложить одно изображение на другое в командной строке Linux (компоновка изображений)».

К примеру, следующая команда создаст надпись и добавит её к изображению:

magick IMAGE.jpg \( -background lightblue -fill DarkViolet -font Utopia-Regular -size 1000 label:ZaLinux.ru \) -append test60.jpg

Следующая команда очень похожа на предыдущую с тем отличием, что первым изображением является надпись, а затем идёт фотография, в результате получается, что надпись находится над изображением:

magick \( -background lightblue -fill DarkViolet -font Utopia-Regular -size 1000 label:ZaLinux.ru \) IMAGE.jpg -append test61.jpg

Вы можете поместить изображение с надписью в любом месте фотографии, для этого укажите координаты изображения с помощью опции -geometry:

magick IMAGE.jpg \( -background lightblue -fill DarkViolet -font Utopia-Regular -size 400 label:ZaLinux.ru \) -geometry +400+450 -composite test62.jpg

С помощью опции -gravity вы можете поместить надпись в ту или иную область изображения не указывая его координаты, либо поменять начало координат. Следующая команда поместить надпись внизу на фотографии:

magick IMAGE.jpg \( -background lightblue -fill DarkViolet -font Utopia-Regular -size 400 label:ZaLinux.ru \) -gravity South -geometry +0+0 -composite test63.jpg

Эта команда помещает надпись в самый центр фотографии:

magick IMAGE.jpg \( -background lightblue -fill DarkViolet -font Utopia-Regular -size 400 label:ZaLinux.ru \) -gravity Center -geometry +0+0 -composite test64.jpg

Как с помощью label: или caption: добавить надпись без фона

Чтобы добавить надпись без фона с помощью label: или caption: необходимо использовать следующие опции:

  • -transparent white — делает фон прозрачным
  • +antialias — отключает сглаживание, иначе надпись получится с белыми пятнами

Пример команды:

magick IMAGE.jpg \( -size 320x100 +antialias -fill blue label:'ZaLinux.ru' -transparent white \) -composite test.jpg

Ещё один способ сделать фон полностью прозрачным — изначально указать цвет с полной прозрачностью. О том, как это сделать смотрите в разделе Как указать цвет с прозрачностью.

Пример команды:

magick IMAGE.jpg \( -background 'rgba(255,255,255,0)' -fill DarkViolet -font Utopia-Regular -size 400 label:ZaLinux.ru \) -gravity South -geometry +0+0 -composite test65.jpg

Как добавить текст с прозрачностью на фотографию. Как сделать полупрозрачный фон для добавляемого изображения

Вы можете использовать цвета с частичной прозрачностью для:

  • добавления текста с прозрачностью на фотографию
  • создания прозрачного фона для добавляемой надписи
  • для добавления водяного знака на изображение

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

Пример команды с использованием частично прозрачного цвета:

magick IMAGE.jpg -pointsize 72 -fill 'rgba(148,0,211,0.5)' -annotate +650+150 'zaLinux.ru' test.jpg

В следующей команде текст с прозрачностью используется для надписи и для фона текста:

magick IMAGE.jpg -undercolor 'rgba(148,0,211,0.1)' -pointsize 72 -fill 'rgba(0,0,128,0.5)' -font Liberation-Serif -annotate +650+450 'zaLinux.ru' test.jpg

Вы также можете использовать прозрачные цвета с label: или caption: (как для фона, так и для надписи), например:

magick IMAGE.jpg \( -background 'rgba(148,0,211,0.1)' -fill 'rgba(0,0,128,0.5)' -font Utopia-Regular -size 400 label:ZaLinux.ru \) -geometry +400+450 -composite test.jpg

Смотрите продолжение: Как добавить надпись на большое количество изображений


Рекомендуемые статьи:

4 Комментарии

  1. Roman

    Здравствуйте ! подскажите пожалуйста, а кирилицу imagemagick не поддерживает ?  сегодня ковырял выдал такое magick.exe: unable to open image 'РєСѓСЂРІР°\nR.\nR': No such file or directory @ error/blob.c/OpenBlob/3570.

    1. Alexey (Автор записи)

      Приветствую! Судя по имени исполнимого файла magick.exe, вы используете ImageMagick в Windows, правильно?

      Команда

      magick '.\Для теста.jpg' test.png

      как можно увидеть на скриншоте, прекрасно сработала.

      То есть ImageMagick поддерживает кириллицу в Windows. Я использую Windows 11 + Windows Terminal Preview + PowerShell 7.

      1. Roman

        Проблема не в  названии фотографии, проблема в нанесении  кирилических символов на фотографию) но он это выдает как проблему названия) Прилаживаю скрины. 
        На первом скрине пример с Вашим или иным английским текстом все работает отлично.
        на втором я передаю кирилические символы работа завершается с ошибкой 🙁 

         -pointsize 35 -fill White -annotate +200+300 'За Русского царя'

        Разобрался !!)) Спасибо !! помогли двойные " в  "За Русского царя" ( Ваш способ)

    2. Alexey (Автор записи)

      Мне удалось воспроизвести вашу ошибку и найти для неё решение.

      Если открыть CMD:

      cmd

      А затем выполнить команду:

      magick '.\Для теста.jpg' test.png

      То получаю аналогичную ошибку, что нет такого файла или каталога:

      magick: unable to open image ''.\╨Ф╨╗╤П': No such file or directory @ error/blob.c/OpenBlob/3565.
      magick: no decode delegate for this image format `' @ error/constitute.c/ReadImage/741.

      Хотя в вашем случае другая кодировка файлов, а именно CP-1251.

      Если имя файла взять в двойные кавычки, вместо одинарных, то команда работает правильно:

      magick ".\Для теста.jpg" test.png

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

Добавить комментарий для Roman Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *