在我的网站上,我希望用户能够输入多行文本,并将其转换为图像。我的主要问题是找出我的图片有多少列字体与字体大小的正确方程式。
这是我的原始代码:
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 px 长度上展开,而不是只展开大约一半。
这是它现在创建的内容:http: //imgur.com/qLHn7Wv
关于更好的方程式有什么想法吗?