Рисование в центре изображения

#python #python-imaging-library #discord.py

#python #python-imaging-library #discord.py

Вопрос:

 def centerdraw(img, msg, color, font):
    W, H = img.size
    draw = ImageDraw.Draw(img)
    w, h = draw.textsize(msg, font=font)
    draw.text(((W-w)/2,(H-h)/2), msg, color=color, font=font)
 

итак, у меня есть это, которое рисует сообщение, которое я отправил в центре изображения

     img = Image.open('name1.png')
    if len(ctx.author.name) > 9:
        msg = ctx.author.name[:9]
    if len(ctx.author.name) <= 9:
        msg = ctx.author.name
    color = (0, 0, 0)
    font = ImageFont.truetype('bubblegum.ttf', 27)
    centerdraw(img=img, msg=msg, color=color, font=font)
    img.save('newname1.png')
 

У меня есть этот код, который рисует ctx.author.name на изображение (ctx определен). Но это ничего не делает. Он не рисует то, что должен рисовать. Когда я впервые попробовал это, это сработало, но потом перестало работать. Любая помощь? Кстати ctx.author.name , это связано с discord.py , он в основном возвращает str объект.

это изображение это изображение (оно слева) Он полностью белый

Комментарии:

1. Вы проверили, что размер img больше, чем textsize? вы ввели явные значения, your draw.text чтобы заставить его работать? Что изменилось? Если бы это работало сейчас, не пытайтесь идентифицировать элементы, которые изменились.

2. @TomMyddeltyn Да, я пробовал текст с разными размерами, я пробовал 10, 27, 30, 50 и 100, но это ничего не изменило, также ни один из элементов не изменился

3. создайте минимальный рабочий код с примерами данных, чтобы мы могли просто скопировать и запустить его. Проблема может быть только в шрифте, которого у нас нет. ИЛИ, может быть, ваша проблема заключается в шрифте. Вы пробовали использовать стандартные шрифты?

Ответ №1:

Хорошо, я наконец нашел ответ. Мне пришлось преобразовать изображение в режим RGB следующим образом, а затем делать все, что я хочу