【问题标题】:how to draw text to bitmap in python?如何在python中将文本绘制到位图?
【发布时间】:2018-09-12 05:15:20
【问题描述】:

我想将文本创建为位图。该文本被认为是长字符串文本。

所以请告诉我如何从文本创建位图。

我试过这个:

from PIL import Image, ImageFont
img = Image.new('L', (500, 500), color=0)
img_w, img_h = img.size
font = ImageFont.truetype('arial.ttf', 20)
mask = font.getmask('some text related location that is going to write here.'
                    'this is watermark text', mode='L')
mask_w, mask_h = mask.size
print(mask_w,mask_h)
print(type(mask))
d = Image.core.draw(img.im, 0)
# d = d.rotate(40)
d.draw_bitmap(((img_w - mask_w)/2, (img_h - mask_h)/2), mask, 255)
img = img.rotate(40)
img.show()
img.save('op.jpg')

但是文本是从两边剪切的。 这就是我得到的。

【问题讨论】:

  • 您是否尝试在旋转之前打印图像? img = img.rotate(40) 声明可能是这背后的原因。
  • 是的..当然我试过..在旋转文本之前以相同的方式剪切..
  • haptik.ai/tech/… 试试这个链接

标签: python bmp


【解决方案1】:

文本从两侧剪切,因为它在旋转之前已被图像的水平边界剪切。在旋转之前,您应该创建一个宽度足以容纳整个文本的图像。也就是说,你应该在获取到Image之后创建一个宽度为mask_w的对象。

【讨论】:

  • 这对我来说不是一个解决方案。如果文本长度很长,所以每次我都必须创建大宽度。即使我创建了大宽度并且文本长度大于宽度,所以不可能创建大宽度
  • 如果你想要一个长字符串在你的输出中,你需要一个大的宽度。为什么你会期待其他情况?
  • 具体来说,你应该在获取后创建一个宽度为mask_wImage对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 2013-07-29
  • 1970-01-01
相关资源
最近更新 更多