Как мне нарисовать рамку, ограничивающую текст, с помощью pgmagick

#imagemagick #graphicsmagick #pgmagick

#imagemagick #graphicsmagick #pgmagick

Вопрос:

Я успешно нарисовал некоторый текст на изображении с помощью pgmagick:

 from pgmagick.api import Image
img = Image((300, 200))
img.annotate('Hello World')
img.write('helloworld.png')
  

но как получить ограничивающую рамку текста? Кто-нибудь может мне помочь?

Ответ №1:

Я ничего не знаю о pgmagick но, возможно, это поможет, если я покажу вам пару вещей, которые вы можете сделать в командной строке с помощью ImageMagick.

Вариант 1

Используйте label для создания холста, достаточно большого для желаемого текста, а затем спросите ImageMagick, насколько велика геометрия этого холста:

 convert label:"Hello world" -format %G info:
62x15
  

Итак, размер шрифта «Hello world» по умолчанию равен 62 пикселям в ширину и 15 пикселям в высоту.

Вариант 2

Или используйте -annotate так, как вы делали, а затем спросите ImageMagick, какого размера она была бы, если бы вы обрезали лишнее пространство вокруг нее:

 convert -size 300x200 xc:red -annotate  10 20 "Hello world" -format %@ info:
61x8 10 12
  

Вариант 3

Создайте холст и пометьте его, затем обрежьте и получите размер:

 convert -size 300x200 xc:red -annotate  10 20 "Hello world" -trim info:
xc:red XC 61x8 300x200 10 12 16-bit sRGB 0.000u 0:00.000
  

Вариант 4

Создайте холст, аннотируйте, обрезайте, сохраните, а затем получите размеры результата:

 convert -size 300x200 xc:red -annotate  10 20 "Hello world" -trim result.png

identify result.png
result.png PNG 61x8 300x200 10 12 16-bit sRGB 887B 0.000u 0:00.000
  

Возможно (надеюсь), вы сможете адаптировать один из них к pgmagick .