我很难让 mini_magick 在图像上绘制包含引号、双引号等的文本。我尝试了各种修改c.draw
无济于事。转义这些字符的最佳方法是什么,以便 c.draw 无错误地显示它们?
错误:non-conforming drawing primitive definition
m'`
由。。。生产
c.draw "text 8,8 'I'm'"
包含其他特殊字符(例如 é)也会导致错误。我希望能够接受来自用户的文本字符串作为输入,因此需要 Unicode 兼容性。
我很难让 mini_magick 在图像上绘制包含引号、双引号等的文本。我尝试了各种修改c.draw
无济于事。转义这些字符的最佳方法是什么,以便 c.draw 无错误地显示它们?
错误:non-conforming drawing primitive definition
m'`
由。。。生产
c.draw "text 8,8 'I'm'"
包含其他特殊字符(例如 é)也会导致错误。我希望能够接受来自用户的文本字符串作为输入,因此需要 Unicode 兼容性。
你有没有看到...
?
无论如何,以下命令在命令行上对我有用:
convert \
-size 500x100 xc:none \
-box yellow \
-pointsize 72 \
-gravity center \
-draw "text 8,8 ' \'I\'m\' '" \
-trim \
+repage \
special-chars.png
并产生这个:
对于更复杂的文本绘图要求,强烈建议您通过将绘图命令写入单独的*.mvg
(Magick 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
你会得到
甚至,与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
你可以得到:
#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')