2

我很难让 mini_magick 在图像上绘制包含引号、双引号等的文本。我尝试了各种修改c.draw无济于事。转义这些字符的最佳方法是什么,以便 c.draw 无错误地显示它们?

错误:non-conforming drawing primitive definitionm'`

由。。。生产

 c.draw "text 8,8 'I'm'" 

包含其他特殊字符(例如 é)也会导致错误。我希望能够接受来自用户的文本字符串作为输入,因此需要 Unicode 兼容性。

4

2 回答 2

1

你有没有看到...

?

无论如何,以下命令在命令行上对我有用:

convert \
   -size 500x100 xc:none \
   -box yellow \
   -pointsize 72 \
   -gravity center \
   -draw "text 8,8 '  \'I\'m\'  '" \
   -trim \
   +repage \
    special-chars.png

并产生这个:
显示使用 ImageMagicks 文本绘制功能创建的特殊字符的示例 PNG

对于更复杂的文本绘图要求,强烈建议您通过将绘图命令写入单独的*.mvgMagick Vector Graphic)文件来规避所有转义。例如,在以下内容中1.mvg

 text 8,8 "öäü ß ÄÖÜ é"

这个命令:

convert \
   -size 250x100 xc:none \
   -box yellow \
   -pointsize 72 \
   -gravity center \
   -draw @1.mvg \
   -trim \
   +repage \
    special-chars.png

你会得到
通过 .mvg 文件获取更多特殊字符

甚至,与2.mvg

推送图形上下文
 视框 0 0 600 100
 推送图形上下文
   填充“橙色”
   矩形 0,0 600,100
 流行图形上下文
 推送图形上下文
   填充“白色”
   字体 Palatino-Roman
   字体大小 48
   笔画宽度 2
   重力东南
   文本 8,8 "äöü ß ÄÖÜ é"
 流行图形上下文
 推送图形上下文
   填写“绿色”
   矩形 10,10 300,90
 流行图形上下文
 推送图形上下文
   填写“红色”
   字体 Palatino-Bold-Italic
   字体大小 28
   笔画宽度 1
   文本 18,40 "€ ¥ © ℉ ậ ḁ å ǎ à ç ë ĵ"
 流行图形上下文
流行图形上下文
这个命令:

convert 2.mvg 2.png

你可以得到:
...甚至更多特殊字符

于 2012-08-11T12:16:18.583 回答
0
#Try lightweight GD2: https://www.ruby-toolbox.com/search?q=GD2


require 'gd2-ffij'
PATH_TO_FONT   = "/usr/share/fonts/truetype/DroidSans.ttf"
    image = GD2::Image::TrueColor.new(512, 512)
    image.draw do |pen|
      pen.font = GD2::Font::TrueType[PATH_TO_FONT, 32]
      pen.color = image.palette.resolve(GD2::Color[128, 16, 16])
      pen.move_to(256, 128)
      pen.text(GD2::VERSION, 5)
    end
image.export('./one.jpg')
于 2013-03-01T14:30:21.273 回答