Линия не будет рисоваться на изображении с помощью ImageDraw - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь использовать PIL, чтобы открыть изображение, а затем нарисовать на нем линию, но она не работает. Я пытаюсь отобразить выравнивание, и строка показывает, как далеко выровнялся пользователь.

Я попытался создать новое изображение, используя Image.new, и уже имея доступную базу, и открыв ее, используя Image.open, и я также попытался поместить координаты непосредственно в функцию, и просто поместить два кортежи в качестве переменных и вызов этих переменных в функцию (как показано ниже). Базовое изображение представляет собой прозрачное изображение.

    length = 300 # Used as a placeholder integer, as this would change depending on user's level
    base = Image.open('./level_up/base.png')
    draw = ImageDraw.Draw(base)
    pos1 = (280, 324)
    pos2 = (280, length + 324)
    draw.line((pos1, pos2), fill=(255, 102, 168), width=20)
    base.save('./level_up/base2.png')

Я открываю изображение, которое является чистым, прозрачным изображением 1500 x 296, и ничего там нет. Нет строки или что-нибудь.

1 Ответ

0 голосов
/ 10 июля 2019

Поскольку вы работаете с изображением, содержащим прозрачность (режим «RGBA» в PIL), вы должны явно передать непрозрачность как 4-й компонент цвета. Просто добавьте «255», что означает 100% непрозрачность к цвету заливки в вашем вызове для строки, и он должен работать:

draw.line((pos1, pos2), fill=(255, 102, 168, 255), width=20)
...