如何在python中将文本绘制为位图?

如何在python中将文本绘制为位图?,python,bmp,Python,Bmp,我想创建文本到位图。该文本被视为长字符串文本 所以请告诉我如何从文本创建位图 我试过这个: 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

我想创建文本到位图。该文本被视为长字符串文本

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

我试过这个:

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')
但文本是从两侧剪切的。
这是我得到的

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

这不是我的解决方案。。如果文本长度很长,那么每次我都要创建大宽度。即使我创建了大宽度,文本长度也大于宽度,所以不可能创建大宽度。如果您希望输出中有一个长字符串,则需要大宽度。为什么您会有其他期望?具体来说,您应该在获得
图像后创建一个宽度为
mask_w
对象。在旋转图像之前,您是否尝试过打印图像
img=img.rotate(40)
语句可能是这背后的原因。是的..当然我试过。。旋转前,文本的剪切方式相同。。试试这个链接