Рустам Абдрашитов
Мудрец
(10275)
4 часа назад
Вот пример кода на Python с использованием библиотеки PIL (Pillow) для создания текста с эффектом обводки:
```python
from PIL import Image, ImageDraw, ImageFont
import numpy as np
# Создаем новое изображение
width = 800
height = 200
background = Image.new('RGBA', (width, height), (255, 255, 255, 0))
draw = ImageDraw.Draw(background)
# Загружаем шрифт (укажите путь к вашему шрифту)
font_size = 80
try:
font = ImageFont.truetype("arial.ttf", font_size)
except:
font = ImageFont.load_default()
text = "ТЕКСТ"
# Получаем размеры текста
text_bbox = draw.textbbox((0, 0), text, font=font)
text_width = text_bbox[2] - text_bbox[0]
text_height = text_bbox[3] - text_bbox[1]
# Центрируем текст
x = (width - text_width) // 2
y = (height - text_height) // 2
# Рисуем обводку
outline_size = 3
for offset_x in range(-outline_size, outline_size + 1):
for offset_y in range(-outline_size, outline_size + 1):
draw.text((x + offset_x, y + offset_y), text, font=font, fill='black')
# Рисуем основной текст
draw.text((x, y), text, font=font, fill='white')
# Сохраняем результат
background.save('text_with_outline.png')
```
Этот код создает:
1. Текст с черной обводкой и белым заполнением
2. Прозрачный фон
3. Центрированное расположение
Для изменения параметров можно:
- Менять цвета через параметр `fill`
- Регулировать толщину обводки через `outline_size`
- Изменять размер шрифта через `font_size`
- Менять шрифт, указав другой файл в `ImageFont.truetype()`
Если нужен градиент или другие эффекты, можно дополнить код:
```python
# Пример с градиентом
def create_gradient_text():
from PIL import Image, ImageDraw, ImageFont, ImageColor
import numpy as np
width = 800
height = 200
image = Image.new('RGBA', (width, height), (255, 255, 255, 0))
draw = ImageDraw.Draw(image)
try:
font = ImageFont.truetype("arial.ttf", 80)
except:
font = ImageFont.load_default()
text = "ТЕКСТ"
text_bbox = draw.textbbox((0, 0), text, font=font)
text_width = text_bbox[2] - text_bbox[0]
text_height = text_bbox[3] - text_bbox[1]
x = (width - text_width) // 2
y = (height - text_height) // 2
# Создаем маску для текста
mask = Image.new('L', (width, height), 0)
mask_draw = ImageDraw.Draw(mask)
mask_draw.text((x, y), text, font=font, fill=255)
# Создаем градиент
gradient = np.linspace(0, 255, height, dtype=np.uint8)
gradient = np.tile(gradient.reshape(height, 1), (1, width))
gradient = Image.fromarray(gradient)
# Применяем градиент к тексту
colored_text = Image.new('RGBA', (width, height), (255, 0, 0, 0))
colored_text.putalpha(mask)
# Добавляем обводку
outline_size = 3
for offset_x in range(-outline_size, outline_size + 1):
for offset_y in range(-outline_size, outline_size + 1):
draw.text((x + offset_x, y + offset_y), text, font=font, fill='black')
# Накладываем градиентный текст
image.paste(colored_text, (0, 0), colored_text)
return image
# Создаем и сохраняем изображение
gradient_text = create_gradient_text()
gradient_text.save('gradient_text.png')
```
Этот второй пример создает текст с градиентной заливкой и обводкой. Вы можете настроить цвета градиента, изменив параметры в `colored_text = Image.new('RGBA', (width, height), (255, 0, 0, 0))`, где (255, 0, 0, 0) - это цвет в формате RGBA.