#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 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()
Комментарии:
1.подсчитайте, сколько
n
у этого текста, и суммируйте результат чиселn
*
высоты вашего шрифта.
Ответ №1:
Я исправил это отлично. Пожалуйста, протестируйте это.
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()
Комментарии:
1. Вы можете протестировать с любым текстом.