当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在PIL中指定矩形的宽度?

如何解决《有没有办法在PIL中指定矩形的宽度?》经验,为你挑选了2个好方法。



1> Tim K..:

PIL rectangle不支持这个width论点.

这是一个绘制第一个初始矩形的方法,然后是向内的其他矩形 - 注意,线宽沿边框居中.

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)



2> 小智..:

除了四条线之外,您还可以绘制一条包含四个点的线,从而形成一个矩形:

def drawrect(drawcontext, xy, outline=None, width=0):
    (x1, y1), (x2, y2) = xy
    points = (x1, y1), (x2, y1), (x2, y2), (x1, y2), (x1, y1)
    drawcontext.line(points, fill=outline, width=width)

# example
from PIL import Image, ImageDraw
im = Image.new("RGB", (150, 150), color="white")
draw = ImageDraw.Draw(im)

drawrect(draw, [(50, 50), (100, 100)], outline="red", width=5)

im.show()


我正在使用PIL v1.1.7和枕头v 5.3.0,并绘制带有线条的矩形会导致角落缺少像素。我认为线条绘制算法中仍然存在错误。更好的方法是在循环中绘制逐渐增大的矩形以近似width参数。请参阅下面的答案。
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有