【发布时间】:2011-07-23 17:46:09
【问题描述】:
我有一些 .png 图像,我希望能够快速:
(a) 从文件加载 .png。 (b) 在 .png 的顶部画一些简单的线条。 (c) 获取结果图像的内容(字节)以作为 http 请求的结果返回。
听起来 PIL 很适合用相对较少的代码执行此操作。但是,我试图了解它的效率,尤其是当我在步骤 (b) 中要绘制数千条线时。另一种方法是使用 PyOpenGL,但在开始之前,我想了解 PIL 是否已经足够快。
我想问一下 PIL 是否在幕后使用了 OpenGL。但这可能是一个错误的问题,因为我的理解是,为了从 PyOpenGL 中获得真正的速度优势,我想将我的线顶点作为 NumPy 数组提交。所以大概即使 PIL 使用 OpenGL,当我进行单独的 PIL 调用来绘制我的每条线时,我也会失去很多好处?
在绘制大量图元时,有人有关于 PIL 速度的具体数据吗?
【问题讨论】:
-
要使用 OpenGL,您需要一个 OpenGL 上下文。如果您计划从无头服务器(如 http 请求响应要求所暗示的那样)使用此软件,这可能会很困难。
-
@tkerwin:获取无头上下文的难度因操作系统而异。希望@M Katz 能让我们更多地了解环境。当然,总是可以创建隐藏窗口,但在某些环境中可能无法加速。
-
当然正确,我也不确定,但我猜如果加速,使用 OpenGL 会比 PIL 更快,否则会更慢。
-
我对我的服务器的控制权比某些人多,尽管我不确定他们是否总是有 GPU(“无头”是指“缺少 GPU 并且可能根本没有显卡, “ 正确的?)。但是,我希望通过使用 OpenGL,如果它存在,我将获得硬件加速,如果它不存在,我将获得良好的软件渲染。不是这样吗?我的理解是 OpenGL 比“窗口”概念低级,所以我可以做任何我想要的绘图,不管它是否可以实际显示在那个系统上。
标签: python opengl python-imaging-library gpu