Можно ли добавить синюю полосу, используя PIL или Pillow? - PullRequest
0 голосов
/ 30 апреля 2020

Итак, у меня есть серая полоса , но я хочу сделать небольшую ее часть, например это . Но я не хочу загружать синюю полосу, я просто хочу сделать это с чистым кодом, используя Python

1 Ответ

1 голос
/ 30 апреля 2020

Я не уверен, как вы на самом деле должны его кодировать, но я подумал, что если я нарисую кружок голубого цвета в правом конце индикатора выполнения, а затем заливаю за ним слева, это должно сработать :

#!/usr/bin/env python3

from PIL import Image, ImageDraw

# Open template and get drawing context
im = Image.open('progress.png').convert('RGB')
draw = ImageDraw.Draw(im)

# Cyan-ish fill colour
color=(98,211,245)

# Draw circle at right end of progress bar
x, y, diam = 254, 8, 34
draw.ellipse([x,y,x+diam,y+diam], fill=color)

# Flood-fill from extreme left of progress bar area to behind circle
ImageDraw.floodfill(im, xy=(14,24), value=color, thresh=40)

# Save result
im.save('result.png')

enter image description here

Просто чтобы вы поняли, что я делаю, я рисую круг, где изображение ниже выделено красным, а затем заливка начинается там, где изображение помечено желтым цветом:

enter image description here

Итак, если вы хотите показать больше прогресса, просто увеличьте x в коде - если вы хотите меньше прогресса, уменьшите x.


Что касается качества закругленных концов, вы обязательно получите неровные края, если начнете с круга радиуса 17, и они увеличат его , Вот что делает ImageMagick слева с сглаживанием и справа без:

enter image description here

Ключевые слова : Python, обработка изображений, PIL, Подушка, прогресс, полоса, индикатор выполнения, закругленные концы.

...