Эмодзи не отображаются цветамиPython

Программы на Python
Anonymous
Эмодзи не отображаются цветами

Сообщение Anonymous »

Я пытаюсь добавить ЦВЕТНЫЕ смайлы к изображениям в качестве наложения, но кажется, что смайлы продолжают отображаться в черно-белом и прозрачном виде:
пример вывода
Вот над чем я сейчас работаю:
def add_text_overlay(image_path, text, font_path, emoji_font_path, font_size, text_spacing, x_padding, output_path,
text_position, offset_x, offset_y):
с PILImage.open(image_path) как img:
img =crop_and_resize(img, 1080, 1440)

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

    draw = ImageDraw.Draw(img)
font = ImageFont.truetype(font_path, font_size)

# Load the emoji font using PIL
emoji_font = None
try:
emoji_font = ImageFont.truetype(emoji_font_path, 137)  # Adjust pixel size as needed
except OSError as e:
logging.error(f"Unable to load the emoji font: {e}")
logging.error(f"Path checked: {os.path.abspath(emoji_font_path)}")
emoji_font = font  # Fallback to regular font if emoji font fails

lines = wrap_text(text, 28)
fixed_line_height = font_size + text_spacing
total_text_height = fixed_line_height * len(lines)

initial_text_y = (img.height - total_text_height) / 2 + offset_y

for i, line in enumerate(lines):
text_bbox = draw.textbbox((0, 0), line, font=font)
text_width = text_bbox[2] - text_bbox[0]

if text_position == 'left':
text_x = x_padding + offset_x
elif text_position == 'right':
text_x = img.width - text_width - x_padding + offset_x
else:
text_x = (img.width - text_width) / 2 + offset_x

text_y = initial_text_y + i * fixed_line_height
if text_x < 0:
text_x = 0
if text_x + text_width > img.width:
text_x = img.width - text_width

# Draw each character with the appropriate font
for char in line:
char_font = emoji_font if is_emoji(char) else font  # Use emoji font for emoji characters
draw.text((text_x, text_y), char, font=char_font, fill="black")
text_x += char_font.getbbox(char)[2]  # Update this line to use getbbox

img.save(output_path)
Некоторое время у меня была ошибка «неверный размер пикселя», пока я не изменил размер пикселя на 137. После этого он просто рисовал монохромный прозрачный смайлик.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ith-colors

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