Python 如何找到正确的图像大小
我正在尝试用Python将文本转换为图像 代码如下: 只要文本是单行 例如“在img 1234567890上写入的文本” 很好 但如果文本包含“\n”,则图像剪辑和大小计算将不正确 “要写入的文本\n img 1234567890” 请帮忙Python 如何找到正确的图像大小,python,Python,我正在尝试用Python将文本转换为图像 代码如下: 只要文本是单行 例如“在img 1234567890上写入的文本” 很好 但如果文本包含“\n”,则图像剪辑和大小计算将不正确 “要写入的文本\n img 1234567890” 请帮忙 import numpy as np import time import text_to_image from PIL import Image, ImageDraw, ImageFont import os from win32api import
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()
我把它修好了。请测试一下
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()
结果是:
一种方法是将
大小
与\n
的出现次数相乘
n=text.count('\n')+2
#创造形象
image=image.new(mode=“RGB”,size=(int(size/2)*len(text),size*n,color=bg)
结果:
如果从文本中删除
\n
,结果将是:
其他例子:
计算该文本有多少个
\n
,并将\n
*
字体高度的结果相加。您可以使用任何文本进行测试。