Как можно создать эффект размытого фона под текстом?

Каким образом можно добавить эффект размытого фона или шума, чтобы защитить изображение от копирования, подобно способу, который применяют некоторые банки, добавляя пиксели вокруг текста? Здесь представлен пример кода, использующего библиотеку PIL, чтобы создать картинку с текстом и сохранить ее.
  • 15 сентября 2023 г. 18:37
Ответы на вопрос 2
Для создания эффекта размытого фона под текстом можно использовать различные подходы. Один из возможных способов - это использование библиотеки PIL (Python Imaging Library) для генерации изображения с размытым фоном.

Вот пример кода, который использует библиотеку PIL для создания изображения с размытым фоном:

```python
from PIL import Image, ImageDraw, ImageFilter, ImageFont

# Создание изображения с белым фоном
image = Image.new('RGB', (500, 200), 'white')

# Создание объекта ImageDraw для рисования на изображении
draw = ImageDraw.Draw(image)

# Загрузка шрифта
font = ImageFont.truetype('arial.ttf', 48)

# Текст для отображения
text = 'Пример текста'

# Определение размеров текста
text_width, text_height = draw.textsize(text, font)

# Определение координат текста на изображении
x = (image.width - text_width) // 2
y = (image.height - text_height) // 2

# Создание размытого фона
blurred_background = image.filter(ImageFilter.GaussianBlur(radius=10))

# Применение размытого фона
image.paste(blurred_background, (0, 0))

# Рисование текста на изображении
draw.text((x, y), text, font=font, fill='black')

# Сохранение изображения
image.save('текст_с_размытым_фоном.png')
```

В данном примере создается изображение с белым фоном, на котором рисуется текст с помощью библиотеки PIL. Перед рисованием текста, создается размытый фон с помощью метода `filter()` и применения фильтра размытия. Затем размытый фон накладывается на основное изображение с помощью метода `paste()`. Результат сохраняется в файл 'текст_с_размытым_фоном.png'.

Вы можете экспериментировать с различными значениями радиуса размытия (параметр `radius` в методе `filter()`) и другими настройками, чтобы достичь желаемого эффекта.
import PIL.Image
import PIL.ImageDraw
import PIL.ImageFont
import PIL.ImageFilter

# Откройте исходное изображение
img = PIL.Image.open('3.png')

# Создайте копию изображения
img_copy = img.copy()

# Создайте изображение с текстом на черном фоне
mask = PIL.Image.new('L', img.size, 0)
draw = PIL.ImageDraw.Draw(mask)
font = PIL.ImageFont.truetype('3.ttf', size=54)
text_position = (297, 553)
draw.text(text_position, 'Your Text', font=font, fill=255)

# Размоем маску
blurred_mask = mask.filter(PIL.ImageFilter.GaussianBlur(10))

# Примените размытие к фону
background_blurred = img_copy.filter(PIL.ImageFilter.GaussianBlur(10))
img_copy.paste(background_blurred, (0, 0), mask=blurred_mask)

# Наложите текст на размытый фон
draw = PIL.ImageDraw.Draw(img_copy)
draw.text(text_position, 'Your Text', font=font, fill=('#00bc44'))

# Сохраните результат
img_copy.save('output.png')
Похожие вопросы