为了账号安全,请及时绑定邮箱和手机立即绑定

如何找到正确的图像尺寸

如何找到正确的图像尺寸

SMILET 2023-07-11 14:46:36
我正在尝试用 Python 将文本转换为图像这是代码:只要文本是单行,例如“要在 img 1234567890 上写入的文本”没事但如果文本包含“\n”,则图像剪辑和尺寸计算将变得不正确“要写在 \n img 1234567890 上的文本”请帮忙import numpy as npimport timeimport text_to_imagefrom PIL import Image, ImageDraw, ImageFontimport osfrom win32api import GetSystemMetricsdef text_on_img(filename='01.png', text="Text to write on \n img 1234567890", size=200, color=(0,0,0), bg='white'):    "Draw a text on an Image, saves it, show it"    fnt = ImageFont.truetype('arial.ttf', size)    # create image    image = Image.new(mode = "RGB", size = (int(size/2)*len(text),size+50), color = bg)    draw = ImageDraw.Draw(image)    # draw text    draw.text((10,10), text, font=fnt, fill=(0,0,0))    # save file    image.save(filename)    # show file    os.system(filename)text_on_img()
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

我完美地修复了它。请测试一下。


import os


from PIL import Image, ImageDraw, ImageFont



def text_on_img(filename='01.png', text="Text to write on \n img 1234567890", size=200, color=(0, 0, 0), bg='white'):

    "Draw a text on an Image, saves it, show it"

    fnt = ImageFont.truetype('arial.ttf', size)

    # create image


    width = max([int(size/2) * len(line) for line in text.split('\n')])

    height = (size + 50) * len(text.split('\n'))


    image = Image.new(mode="RGB", size=(width, height), color=bg)

    draw = ImageDraw.Draw(image)

    # draw text

    draw.text((10, 10), text, font=fnt, fill=(0, 0, 0))

    # save file

    image.save(filename)

    # show file

    os.system(filename)



text_on_img()

结果:

//img1.sycdn.imooc.com//64acfb0700013b3406070144.jpg

查看完整回答
反对 回复 2023-07-11
?
HUH函数

TA贡献1836条经验 获得超4个赞

一种方法是乘以size出现的次数\n

n = text.count('\n') + 2# create imageimage = Image.new(mode = "RGB", size = (int(size/2)*len(text),size*n), color = bg)

结果:


//img1.sycdn.imooc.com//64acfb1a0001941403310088.jpg

如果从文本中删除\n,结果将是:

//img1.sycdn.imooc.com//64acfb200001893806280059.jpg

其他例子:

//img1.sycdn.imooc.com//64acfb270001a86104730073.jpg

//img1.sycdn.imooc.com//64acfb2d0001ab6b01930205.jpg

//img1.sycdn.imooc.com//64acfb34000119d003450254.jpg

查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信