我在使用mini_magick在图像上绘制包含引号,双引号等的文本时遇到了一些麻烦。我在c.draw
上尝试了各种修改但无济于事。什么是转义这些字符的最佳方法,以便c.draw显示它们而不会出错?
错误:non-conforming drawing primitive definition
m'`
制作
c.draw "text 8,8 'I'm'"
包括其他特殊字符(如é)也会导致错误。我希望能够接受来自用户的文本字符串作为输入,因此需要Unicode兼容性。
答案 0 :(得分:1)
你看到了......
在任何情况下,以下命令行都适用于我:
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
:
push graphic-context viewbox 0 0 600 100 push graphic-context fill 'orange' rectangle 0,0 600,100 pop graphic-context push graphic-context fill 'white' font Palatino-Roman font-size 48 stroke-width 2 gravity SouthEast text 8,8 "äöü ß ÄÖÜ é" pop graphic-context push graphic-context fill 'green' rectangle 10,10 300,90 pop graphic-context push graphic-context fill 'red' font Palatino-Bold-Italic font-size 28 stroke-width 1 text 18,40 "€ ¥ © ℉ ậ ḁ å ǎ à ç ë ĵ" pop graphic-context pop graphic-context和这个命令:
convert 2.mvg 2.png
你可以得到:答案 1 :(得分: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')