Визуализация текста в изображении с не прямыми границами - PullRequest
0 голосов
/ 12 марта 2020

Как сделать текст с границами не прямыми, как на втором изображении? (Шрифт двух изображений отличается, но способ визуализации границ имеет значение.)

enter image description here

enter image description here

Мой начальный код

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

from random import seed
from random import randint
import numpy as np
import os.path

#Returns the text size in terms of width and height.
def getSize(txt, font):
    testImg = Image.new('RGB', (1, 1))
    testDraw = ImageDraw.Draw(testImg)
    return testDraw.textsize(txt, font)

text = 'lemper'
fontname = 'arial.ttf'
fontsize= 25

font = ImageFont.truetype(fontname, fontsize)
width, height = getSize(text, font)

#Creates an image with white background of constant size.
img = Image.new('RGB', (100, 100), 'white')
d = ImageDraw.Draw( img)
d.text(get_xy_coordinates(text, font), text, fill='black', font=font)             
img.save("text_images/1.png")

1 Ответ

1 голос
/ 12 марта 2020

Простой способ добиться этого эффекта - использовать «функцию смещения» (X (x, y), Y (x, y)), которая перемещает каждый пиксель в соседнюю позицию. Эта функция должна быть плавной, с небольшой амплитудой и несколько нерегулярной. Его можно получить, например, с помощью комбинации тригонометрических c функций с несоизмеримыми периодами.

Вам потребуется реализовать функцию передискретизации с билинейной интерполяцией для хорошего качества.

...