2017-01-12 8 views
0

私は、memesのような画像の上にテキストを生成する小さなレール5.0.0.1アプリを開発中です。私はそのようなモデルで書かれた基本コードを持っています。mini_magickとrubyを使ってスペースでテキストを書く

私は、コンソールからこれを実行しているし、次の操作を行い
class Meme < ApplicationRecord 
    require 'mini_magick' 
    mount_uploader :attachment, AttachmentUploader 

    def process_image(img_id, top_text, bottom_text) 
    image = MiniMagick::Image.open(Img.find(img_id).attachment.current_path) 
    image.combine_options do |c| 
     c.gravity 'Center' 
     c.pointsize '22' 
     c.draw "text 200,200 #{top_text}" 
     c.fill 'white' 
     c.draw "text 100,100 #{bottom_text}" 
     c.fill 'white' 
    end 
    self.attachment = image 
    self.save 
    end 
end 

m = Meme.new 
m.process_image(Img.last.id, "Good", "Stuff") 

それが適切に重ねテキストと画像を生成します。

今、私は同じことを行うと、このようなキャプションで空白を含む場合:

mogrify: non-conforming drawing primitive definition `is' @ error/draw.c/DrawImage/3259. 
mogrify: non-conforming drawing primitive definition `Weird' @ error/draw.c/DrawImage/3259. 
mogrify: non-conforming drawing primitive definition `is' @ error/draw.c/DrawImage/3259. 
mogrify: non-conforming drawing primitive definition `Weird' @ error/draw.c/DrawImage/3259. 

私はAPIを見て:

m = Meme.new 
m.process_image(Img.last.id, "This is", "Totally Weird") 

私はそうのようなコンソールで発生した例外を取得しますmini_magickのドキュメントで、ホワイトスペースに関連するものは表示されませんでした。私は、ImageMagickコアにホワイトスペースを正しく挿入する方法を話していますが、mini_magickラッパーを使用しない方法については、たくさんのリンクがあります。

何か不足していますか、空白の代わりに何らかの置換を行うべきですか?

答えて

2

スペースは問題では:mini_magickため

# on "This is" input is becomes 
    #       ⇓⇓ mini_magick does not expect that 
    # c.draw "text 200,200 This is" 
    #     ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓ HERE 
    c.draw "text 200,200 #{top_text}" 
    c.fill 'white' 
    c.draw "text 100,100 #{bottom_text}" 

引用文字列:

#     ⇓   ⇓ HERE 
    c.draw "text 200,200 '#{top_text}'" 
    c.fill 'white' 
    c.draw "text 100,100 '#{bottom_text}'" 
+0

おかげでそんなに、私はそれが私が見渡せたという単純な何かを知っていました。チャンピオンのように働いた。 :) – nulltek

関連する問題