Я не уверен, как вы на самом деле должны его кодировать, но я подумал, что если я нарисую кружок голубого цвета в правом конце индикатора выполнения, а затем заливаю за ним слева, это должно сработать :
#!/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')
Просто чтобы вы поняли, что я делаю, я рисую круг, где изображение ниже выделено красным, а затем заливка начинается там, где изображение помечено желтым цветом:
Итак, если вы хотите показать больше прогресса, просто увеличьте x
в коде - если вы хотите меньше прогресса, уменьшите x
.
Что касается качества закругленных концов, вы обязательно получите неровные края, если начнете с круга радиуса 17, и они увеличат его , Вот что делает ImageMagick слева с сглаживанием и справа без:
Ключевые слова : Python, обработка изображений, PIL, Подушка, прогресс, полоса, индикатор выполнения, закругленные концы.