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 の例

より複雑なテキスト描画要件については、描画コマンドを別の*.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

あなたが得るでしょう
.mvg ファイルによるその他の特殊文字

または、次の場合でも2.mvg:

グラフィックコンテキストをプッシュする
 ビューボックス 0 0 600 100
 グラフィックコンテキストをプッシュする
   「オレンジ」を埋める
   長方形 0,0 600,100
 ポップ グラフィック コンテキスト
 グラフィックコンテキストをプッシュする
   「白」を埋める
   フォント Palatino-Roman
   フォントサイズ 48
   ストローク幅 2
   重力南東
   text 8,8 "äöü ß ÄÖÜ é"
 ポップ グラフィック コンテキスト
 グラフィックコンテキストをプッシュする
   「緑」を埋める
   長方形 10,10 300,90
 ポップ グラフィック コンテキスト
 グラフィックコンテキストをプッシュする
   「赤」を埋める
   フォント Palatino-Bold-Italic
   フォントサイズ 28
   ストローク幅 1
   text 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 に答える