Разница между надписью, рисованием, аннотацией, надписью при добавлении текста в ImageMagick - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь добавить текст к изображению, используя ImageMagick. Я вижу несколько примеров использования draw, label, caption, annotate et al. В чем разница между вышеперечисленным? Я могу проверить результаты вышеупомянутых команд с CLI, однако сталкиваюсь с проблемой при попытке запустить Java с использованием IM4java. Любая помощь с фрагментами кода Java будет полезна.

1 Ответ

4 голосов
/ 02 апреля 2019

Вот как я это воспринимаю - это довольно самоуверенно, и другие могут редактировать и добавлять свои идеи.


label: Как и другие операторы, содержащие двоеточие (:),Например, gradient:, xc:, logo:, оператор label: создает свой собственный холст.Это означает, что вы не рисуете / печатаете текст на существующем изображении, а просто рисуете / печатаете свой текст, и это создает фон для этого текста.

Если вы предварительно укажете -size,он создаст холст такого размера и поместит на него текст с наибольшим размером точек, который подходит.Итак, давайте попробуем широкий фиксированный размер:

convert -background black -fill white -gravity center -size 800x100 label:'Stack Overflow' text.png

enter image description here

А также узкий фиксированный размер:

convert -background black -fill white -gravity center -size 100x100 label:'Stack Overflow' text.png

enter image description here

Если вы не укажете -size заранее, он создаст текст с заданным размером точки и поместит его на холст подходящего размера.Итак, давайте попробуем маленький размер точки без размера холста:

convert -background black -fill white -gravity center -pointsize 16 label:'Stack Overflow' text.png

enter image description here

А также большой размер точки без размера холста:

convert -background black -fill white -gravity center -pointsize 64 label:'Stack Overflow' text.png

enter image description here

Вы также можете указать только ширину, но не высоту, например, с помощью -size 200x, или только высоту, но не ширину, например, -size x50, и он будет использовать самый большой шрифт, который может быть ограничен указанным измерением.

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

convert -background black -fill yellow -strokewidth 2 -stroke magenta \
    -undercolor blue -size 400x100 -gravity center -font 'AppleChancery' label:'Stack Overflow' text.png

enter image description here


caption: похож на label:, но также выполняет перенос слов, поэтому он будет распределять длинное предложение по нескольким строкам для вас всех на своемown.


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


-draw "text 10,10 'Your message'" несколько устарел, но он позволяет вам рисовать на существующеммаг в определенном месте, например, 10,10, показанном выше.Обратите внимание, что в нем нет двоеточия (:), поэтому вам необходимо иметь изображение / холст для рисования.


-annotate действительно заменяет -draw.Как и -draw, вам нужно иметь холст / изображение, на котором уже можно рисовать, но тогда он позволяет вам с большей легкостью позиционировать, сдвигать и вращать текст, чем с -draw.


ЭнтониТиссен дает превосходное обсуждение всех этих вещей, и больше здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...