如何找到正确的图像尺寸

我正在尝试用 Python 将文本转换为图像

这是代码:只要文本是单行,

例如“要在 img 1234567890 上写入的文本”

没事

http://img3.mukewang.com/64acfaeb0001773706310051.jpg

但如果文本包含“\n”,则图像剪辑和尺寸计算将变得不正确

“要写在 \n img 1234567890 上的文本”

http://img1.mukewang.com/64acfaf6000140b002860042.jpg

请帮忙


import numpy as np

import time

import text_to_image

from PIL import Image, ImageDraw, ImageFont

import os

from win32api import GetSystemMetrics



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

    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()


SMILET
浏览 133回答 2
2回答

一只斗牛犬

我完美地修复了它。请测试一下。import osfrom PIL import Image, ImageDraw, ImageFontdef 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()结果:

HUH函数

一种方法是乘以size出现的次数\n。n = text.count('\n') + 2# create imageimage = Image.new(mode = "RGB", size = (int(size/2)*len(text),size*n), color = bg)结果:如果从文本中删除\n,结果将是:其他例子:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python