Python PIL绘制椭圆或矩形

2024-04-25 14:13:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个老程序员,在Fortran、C++、Perl和Perl编程过。 多年来一直在学习Java,并试图学习这种新型的Python语言。你知道吗

我有一个小程序,用PIL来创建一个图像,画一些 原语(矩形、椭圆等…)并将其保存为PNG。工作正常。。。 没有问题。你知道吗

我发现在过去,真正学习一门语言的最好方法 就是“窥视引擎盖下”并理解机械原理(双关语!)。。。我以为我在 进度。。。但是当我们查看PIL图书馆的时候 在幕后,我在图像绘制.py 你知道吗

def ellipse(self, xy, fill=None, outline=None):
    """Draw an ellipse."""
    ink, fill = self._getink(outline, fill)
    if fill is not None:
        self.draw.draw_ellipse(xy, fill, 1)
    if ink is not None:
        self.draw.draw_ellipse(xy, ink, 0)

因此,eliple()调用方法self.draw.draw\u椭圆()好吧,好吧。。。 但是绘制椭圆(…)在哪里定义??那里发生了什么魔法? 我已经搜索了整个PIL目录树(甚至整个python树…),只提到了draw\u eliple的两个地方就在eliple()方法定义中。。。我甚至试过在调试器中单步执行它,但我仍然对引擎盖下发生的事情感到“恼火”。你知道吗

我错过了什么??你知道吗

谢谢!你知道吗


Tags: 方法图像selfnone语言pilfillperl
1条回答
网友
1楼 · 发布于 2024-04-25 14:13:52

draw\u ellipse是在\u imaging.c文件中定义的。请看以下内容。你知道吗

https://github.com/python-pillow/Pillow/blob/master/_imaging.c

由于代码是用c语言编写的(可能是为了提高库的性能),而且您只有一个编译过的PIL包,因此无法看到原始代码。编译文件的名称以_imaging.cpy.~开头。在我的环境中,它是_imaging.cpython-36m-darwin.so。你知道吗

相关问题 更多 >