Проблемы с символами в Pillow
Этот код вставляет текст в фото. Проблема заключается в том, что вместо подобных символов смайлики и необычные шрифты '♧♧ ???????? ♧♧' у меня на фото выводятся вместо текста квадратики. Сложности связаны из-за шрифтов или/и юникода. Пробовал множество шрифтов и ничего не меняется.
from PIL import Image, ImageFont, ImageDraw
img = Image.open("2.png")
# Получаем размеры изображения
width, height = img.size
# Создаем объект для рисования на изображении
draw = ImageDraw.Draw(img)
# Выбираем шрифт и размер
font = ImageFont.truetype("NotoColorEmoji-Regular.ttf", size=17, index=0)
x = 66
y = 206
for name in player_names:
draw.text((x, y), name, font=font, fill=(255, 255, 255))
y += 38 # вертикальный отступ в 37 пикселей
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
во-первых, вы должны быть уверены, что шрифты ваши действительно поддерживают unicode, во-вторых, текст должен быть интерпретируемым в пределах выбранного шрифта - вы, например, пытаетесь одним шрифтом напечатать символы, которых в нем нет, потому что они набраны другим шрифтом. Ну и третье - текс должен быть тоже в unicode:
from PIL import Image, ImageFont, ImageDraw
img = Image.new(mode="RGB", size=(200, 100), color = (255, 255, 255))
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("fonts/DejaVuSans.ttf", size=17, index=0)
x = 50
y = 50
draw.text((x, y), u"♧♧ Привет ♧♧", font=font, fill=(0, 0, 0))
img.save("22.png")