我需要在图像(1024x768)上渲染一些文本(unicode、helvetica、白色、22px、粗体)。
这是我目前的代码:
img = Magick::ImageList.new("my_bg_img.jpg")
txt = Magick::Draw.new
img.annotate(txt, 800, 600, 0, 0, "my super long text that needs to be auto line breaked and cropped") {
txt.gravity = Magick::NorthGravity
txt.pointsize = 22
txt.fill = "#ffffff"
txt.font_family = 'helvetica'
txt.font_weight = Magick::BoldWeight
}
img.format = "jpeg"
return img.to_blob
它的所有罚款,但它不会自动打破行(文字换行),以适应所有的文字到我定义的区域(800x600)。
我做错了什么?
感谢您的帮助:)
3条答案
按热度按时间goqiplq21#
在Draw.annotate方法中,width参数似乎对呈现文本没有影响。
我也遇到过同样的问题,我开发了这个函数,通过添加新行来使文本适合指定的宽度。
我有一个功能来检查一个文本是否适合一个指定的宽度时,画在图像上
我还有另一个函数,通过添加新行来转换文本以适合指定的宽度
mftmpeh82#
试试看:
juzqafwq3#
找到了一些代码here,可以做到这一点:)