2015-12-13 15 views
8

私はPIL/pillowのImageDraw Moduleを使ってイメージに太い四角形を描画しようとしています。PILに矩形の幅を指定する方法はありますか?

私はdraw.rectangle([x1, y1, x2, y2], outline='yellow', width=3)を使用しようとしましたが、widthパラメータが好きではないようです。

私は、たくさんの行でやりたいことをエミュレートすることができますが、それを行う正しい方法があるかどうかは疑問でした。

''' 
coordinates = [x1, y1, x2, y2] 

    (x1, y1) 
     *-------------- 
     |    | 
     |    | 
     |    | 
     |    | 
     |    | 
     |    | 
     --------------* 
         (x2, y2) 

''' 
def draw_rectangle(drawing, coordinates, color='yellow', width=3): 
    #top 
    line_coordinates = [coordinates[0], coordinates[1], coordinates[2], coordinates[1]] 
    drawing.line(line_coordinates, fill=color, width=width) 

    #left 
    line_coordinates = [coordinates[0], coordinates[1], coordinates[0], coordinates[3]] 
    drawing.line(line_coordinates, fill=color, width=width) 

    #right 
    line_coordinates = [coordinates[2], coordinates[1], coordinates[2], coordinates[3]] 
    drawing.line(line_coordinates, fill=color, width=width) 

    #bottom 
    line_coordinates = [coordinates[0], coordinates[3], coordinates[2], coordinates[3]] 
    drawing.line(line_coordinates, fill=color, width=width) 

答えて

5

PILのrectanglewidth引数をサポートしていません。

私はちょうど周りに遊ぶのに適した非効率的な方法を書いた - しかし、線の幅はではなく、境界に沿ってであることに注意してください。

def draw_rectangle(draw, coordinates, color, width=1): 
    for i in range(width): 
     rect_start = (coordinates[0][0] - i, coordinates[0][1] - i) 
     rect_end = (coordinates[1][0] + i, coordinates[1][1] + i) 
     draw.rectangle((rect_start, rect_end), outline = color) 

# example usage 

im = Image.open(image_path) 
drawing = ImageDraw.Draw(im) 

top_left = (50, 50) 
bottom_right = (100, 100) 

outline_width = 10 
outline_color = "black" 

draw_rectangle(drawing, (top_left, bottom_right), color=outline_color, width=outline_width) 
0

あなたはrects例えばビューを描くことができます:ループ機能で、原因の

draw.rectangle([(x, y),(x+w,y+h) ], outline=(0,0,255,255)) 
draw.rectangle([(x+1, y+1),(x+w-1,y+h-1) ], outline=(0,0,255,255)) 
draw.rectangle([(x+2, y+2),(x+w-2,y+h-2) ], outline=(0,0,255,255)) 
... 

を。

関連する問題