Rmagick使用注释方法自定义文本宽度/填充

时间:2017-07-10 13:34:05

标签: ruby-on-rails ruby imagemagick rmagick

根据Rmagick的文档,我们可以设置放置文本的矩形的宽度。

http://www.simplesystems.org/RMagick/doc/draw.html#annotate

以下是我们正在使用的代码,但我们无法为注释块中的文本设置填充或自定义宽度。

对于一个用例,我们希望为annotate块中提供的文本提供自定义填充。

  img=Image.new(1500,600)
  b=Magick::Draw.new

  b.annotate(img,120,10,120,120,"5"){ |txt|
    txt.pointsize = 58
    txt.undercolor= "blue"
  }

  b.get_type_metrics(img, "5")
  img.write("undercolor3.gif")

已经尝试了很多东西,但无法使其发挥作用。任何想法?

2 个答案:

答案 0 :(得分:0)

在图像上绘制一个所需底色的块,然后注释图像,使文本在块上。

要确定所需的块大小,请使用get_type_metrics或get_multiline_type_metrics获取文本的尺寸,然后添加所需的填充量。

答案 1 :(得分:0)

ImageMagick中的注释没有任何填充底色的选项。但你可以欺骗它。最简单的方法是使用“\”在文本的左侧和右侧放置空格。但那只会在左右两侧填充。在标签中:您可以添加换行符,但这在注释中不起作用。您可以添加-interline-spacing,但这只会在底部填充。但这是一个技巧。使用略大的点数在底色中创建文本,然后使用所需的颜色文本进行书写。例如:

没有填充:

convert logo.jpg -gravity center -undercolor pink -pointsize 24 -fill black -annotate + 0 + 0“This Is Some Text”result1.jpg

enter image description here

使用填充:

convert logo.jpg -gravity center -pointsize 34 -undercolor pink -fill pink -annotate +0+0 "X                  X" -pointsize 24 -fill black -annotate +0+0 "This Is Some Text" result2.jpg

或者,您可以在所需大小的图像中心绘制一个粉红色矩形。

enter image description here