Можно ли с помощью reportlab создать размытый текст? - PullRequest
4 голосов
/ 29 мая 2020

Я пытаюсь воспроизвести эффект размытия / тени текста с помощью reportlab. Что-то вроде этого.

image

До сих пор мой подход заключался в работе с цветом заливки (сам текст или фон), но я не думаю, что добьюсь успеха, если я следуйте по этому пути, потому что class принимает только параметр непрозрачности (alpha) помимо тех, которые определяют сам цвет. Сейчас я пытаюсь найти шрифт, который будет имитировать c этот эффект.

Итак, можно ли воспроизвести желаемый эффект с помощью reportlab? Если да, то какой подход я должен использовать для этого?

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 07 июня 2020

Я не вижу простого способа добиться размытого эффекта, как вы можете добиться с помощью CSS или даже с помощью библиотеки PIL с помощью reportlab .

Вы можете попробовать один из следующих шрифтов, которые более-менее mimi c этот эффект: Acidi c, ExtraBlur , Erthqake Font , Stati c Buzz Font , vtks trunkset Font и используйте методы pdfmetrics.registerFont() и TTFont() (например, используя Stati c Buzz Font):

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen.canvas import Canvas

canvas = Canvas('temp.pdf')
pdfmetrics.registerFont(TTFont('StaticBuzz', '/path/to/TTF-file/StaticBuzz.ttf')) #Change the path to the .ttf file.
canvas.setFont('StaticBuzz', 32)
canvas.drawString(0, 700, "Sample usage of StaticBuzz Font.")
canvas.save()
3 голосов
/ 08 июня 2020

Если это вариант (отдельно стоящий текст / заголовок), вы можете сначала преобразовать текст в изображение, а затем размыть его с помощью библиотеки PIL.

Фильтр можно настроить, установив radius, чтобы можно было добиться сильного эффекта размытия:

before after

from PIL import ImageFilter
from PIL import Image

img = Image.open('test.png')

blurred_img = img.filter(ImageFilter.GaussianBlur(radius=5))
blurred_img.show()
...