python - 如何在python中将文本绘制到位图?
问题描述
我想为位图创建文本。该文本被认为是长字符串文本。
所以请告诉我如何从文本创建位图。
我试过这个:
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')
解决方案
文本从两侧剪切,因为它在旋转之前已被图像的水平边界剪切。在旋转之前,您应该创建一个宽度足以容纳整个文本的图像。也就是说,你应该在获得它之后创建Image
一个宽度为 的对象。mask_w
推荐阅读
- ruby-on-rails - 如何在 Rails 模型中创建 Proc 以防止 DRY?Rails 5.2.1,rails_admin
- java - 合并排序和递归混淆/代码不起作用
- aws-lambda - AWS Lambda processing stream from DynamoDB
- javascript - 反应:scrollIntoView 仅适用于 setTimeout
- javascript - 在 Jupyter 扩展中访问数据对象
- c# - 不能实习 Nullable DateTime
- reactjs - React - "Unexpected token" when initialising state
- sql - Too Many Rows throwing 但只选择了一个
- typescript - 从装饰器(打字稿)访问值
- ajax - 需要 e.preventDefault 将 JWT 保存到 localStorage