what I’m trying to do is to draw horizontal lines in PIL of equal size. but my problem is that when I’m trying to fill the image it isn’t full. This is what I’m getting when it should be fully equal. There shouldn’t be any white. It also should work with more or less colors
Code
from PIL import Image, ImageDraw
import random
im = Image.new('RGB', (1000, 1000), (255, 255, 255))
draw = ImageDraw.Draw(im)
colors = [(255,0,0), (255,255,0)]
n = 0
length = len(colors)
amount = 1000 / length
x1 = 0
y1 = 0
x2 = 1000
y2 = 0
for color in colors:
    shape = [(x1, y1), x2, y2]
    draw.line(shape, fill=color, width=int(amount))
    y1 += amount
    y2 += amount
im.save('rect.png')
Advertisement
Answer
When drawing the line, you are specifying the center of the line, so your “shape” should be:
shape = [(x1, y1 + amount // 2), (x2, y2 + amount // 2)]

