2

私のウェブサイトでは、ユーザーが数行のテキストを入力して、それを画像に変換できるようにしたいと考えています。私の主な問題は、フォントとフォントサイズの写真の列数の正しい式を見つけることです。

これが私の元のコードです:

def create_image_from_text
    require 'RMagick'
    @event = Event.for_company(current_domain.company_id).find(params[:event_id])
    @lots = @event.lots
    lot_image = Magick::ImageList.new
    lot_image.new_image(590, 443)
    y = -200
    params[:rows].each do |row|
        if row[1][:text].present?
            text_tool = Magick::Draw.new

            text = row[1][:text]
            text_tool.pointsize = row[1][:size].to_f

            if row[1][:bold].present?
                text_tool.font_weight = Magick::BoldWeight
            end
            if row[1][:italic].present?
                text_tool.font_style = Magick::ItalicStyle
            end
            text_tool.gravity = Magick::CenterGravity
            location = y
            columns = lot_image.columns / row[1][:size].to_f
            word_wrap(text, columns.to_i).split("\n").each do |row|
                text_tool.annotate(lot_image, 0, 0, 0, location += 20, row)
            end
            #text_tool.annotate(lot_image,0,0,0,y, text)
        end
        y += 80
    end
    lot_image.write('test.gif')
    render :new_image_from_text
end

def word_wrap(text, columns = 80)
    text.split("\n").collect do |line|
        line.length > columns ? line.gsub(/(.{1,#{columns}})(\s+|$)/, "\\1\n").strip : line
    end * "\n"
end

設定方法によっては機能しますが、ワード ラッピングが小さすぎます。テキストを 590 ピクセルの長さ全体に広げたいのですが、代わりに約半分だけ広げます。

これが現在作成されているものです: http://imgur.com/qLHn7Wv

より良い方程式に関するアイデアはありますか?

4

0 に答える 0