Как добавить настраиваемую тень к тексту в Python с помощью Pillow?Python

Программы на Python
Ответить
Anonymous
 Как добавить настраиваемую тень к тексту в Python с помощью Pillow?

Сообщение Anonymous »

Изображение настройки тени в Photoshop
Я хотел бы иметь возможность настроить все свойства тени, как показано на этом снимке экрана Photoshop.
Пожалуйста, дважды проверьте, верны ли мои предположения:
  • Непрозрачность — это значение A теневого текста.
  • Угол это всего лишь угол
  • Расстояние – это расстояние
  • Радиус размытия по Гауссу? Как это перенесется из процентного значения?
  • Размер — это размер текста? Интересно, как бы мне сделать значение в пикселях, как показано на изображении

Код: Выделить всё

from PIL import Image, ImageDraw, ImageFont

from typing import Optional, Dict, Tuple, Union

class Text:

def __init__(self, image: Image):
self._draw = ImageDraw.Draw(image)
self._image = image

def text(self, position: Tuple[int, int], text: str, font: ImageFont, color: Tuple[int, int, int, int], drop_shadow: Optional[Dict[str, Union[int, Tuple[int, int, int]]]] = None):
if drop_shadow is not None:
self._add_drop_shadow(position, text, font, drop_shadow)

self._draw.text(position, text, font=font, fill=color)

def _add_drop_shadow(self, original_position: Tuple[int, int], text: str, font: ImageFont, drop_shadow: Dict[str, Union[int, Tuple[int, int, int]]]):
# Not sure. How do I gaussian blur just some text and then put it onto the image? This class represents an entire image, where I will put multiple drop shadowed text or normal text

# Also, how do I make everything match the Photoshop image I linked? Like the percent and px and stuff.
pass

if __name__ == "__main__":
args = {
"opacity": 65,
"angle" : 30,
"distance": 15,
"spread": 29,
"size": 15,
"color": (0, 0, 0)
}

img = Image.new("RGB", (1920, 1080), (255, 255, 255))

text = Text(image=img)
font = ImageFont.truetype("./assets/Hiragino.ttf", 200)
text.text((200, 400), "ダミーテキスト", font, (0, 153, 255, 255), args)

img.show()
Кроме того, я пробую печатать на Python, но это кажется очень утомительным. Если в моем коде есть что-то унидиоматическое, пожалуйста, сообщите мне об этом.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-pillow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»