gpt4 book ai didi

python PIL : How to draw an ellipse in the middle of an image?

转载 作者:太空狗 更新时间:2023-10-29 18:21:39 25 4
gpt4 key购买 nike

我似乎无法使这段代码正常工作:

import Image, ImageDraw

im = Image.open("1.jpg")

draw = ImageDraw.Draw(im)
draw.ellipse((60, 60, 40, 40), fill=128)
del draw

im.save('output.png')
im.show()

这应该在 (60,60) 处绘制一个 40 x 40 像素的椭圆。图像不返回任何内容。

但是这段代码工作正常:

draw.ellipse ((0,0,40,40), fill=128)

似乎当我更改前 2 个坐标(对于应该放置椭圆的位置)时,如果它们大于要绘制的椭圆的大小,它将不起作用。例如:

draw.ellipse ((5,5,15,15), fill=128)

有效,但只显示矩形的一部分。鉴于

draw.ellipse ((5,5,3,3), fill=128)

什么都不显示。

绘制矩形时也会发生这种情况。

最佳答案

边界框是一个 4 元组 (x0, y0, x1, y1),其中 (x0, y0) 是框的左上边界, (x1, y1) 是框的右下边界。

要在图像的中心绘制一个椭圆,您需要定义您希望椭圆的边界框有多大(我的代码中的变量 eXeY下面的片段)。

话虽如此,下面是一个在图像中心绘制椭圆的代码片段:

from PIL import Image, ImageDraw

im = Image.open("1.jpg")

x, y = im.size
eX, eY = 30, 60 #Size of Bounding Box for ellipse

bbox = (x/2 - eX/2, y/2 - eY/2, x/2 + eX/2, y/2 + eY/2)
draw = ImageDraw.Draw(im)
draw.ellipse(bbox, fill=128)
del draw

im.save("output.png")
im.show()

这会产生以下结果(左侧为 1.jpg,右侧为 output.png):

1.jpg output.png

关于 python PIL : How to draw an ellipse in the middle of an image?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4789894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com