如何在ImageDraw中绘制倾斜的椭圆?

时间:2011-08-24 16:01:47

标签: python image drawing python-imaging-library

我试图在图像绘制中绘制一个倾斜的椭圆。但是,我不确定如何定义它,因为虽然下面的方案会移动点,但我认为这只会压扁椭圆,而不是旋转它(我认为在任何情况下转换都有一些错误)。我将此函数的输出提供给ellipse命令并将其添加到现有图片中,因此任何旋转整个图像的方法都不好。 OD只是我正在使用的坐标中心的一个方形偏移。

def ellipsebound(major, minor, tilt=0, offset=0,  angle=0):
    #creates a bound for an ellispe, defined with tilt meaning to rotate the orthogonal axis and angle corresponds to rotating the ellipse position
    angle = radians(angle)
    tilt = radians(tilt)
    box=(
    1 + int(ceil((OD+offset*cos(angle)+(major*cos(tilt)+minor*sin(tilt)))/conv)), 
    1 + int(ceil((OD+offset*sin(angle)+(major*sin(tilt)-minor*cos(tilt)))/conv)),
 int(ceil((2*OD-(OD-offset*cos(angle)-(major*cos(tilt)+minor*sin(tilt)))/conv))),
 int(ceil((2*OD-(OD-offset*sin(angle)-(major*sin(tilt)-minor*cos(tilt)))/conv)))
 ) #create bounding box
    return box

有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

看起来像'框'用于绘制椭圆的那个没有与之相关的旋转。它只是由(左,上,右,下)范围定义。

一种可能的解决方法(取决于您需要做什么)是将椭圆(正确大小但没有旋转)绘制到中间图像上,使用image.rotate()方法,然后将其粘贴到目标中图像。

我希望有所帮助。