Python图像库(PIL)的ImageDraw模块速度如何,与OpenGL相比呢?
我有一些 .png 格式的图片,我想快速做到以下几点:
(a) 从文件中加载一张 .png 图片。
(b) 在这张 .png 图片上画一些简单的线条。
(c) 获取处理后图片的内容(字节),并将其作为 HTTP 请求的结果返回。
听起来 PIL 是一个不错的选择,可以用相对少的代码来实现这些功能。不过,我想了解一下它的效率,特别是当我需要在第 (b) 步画上成千上万条线的时候。另一种选择是使用 PyOpenGL,但在深入研究之前,我想先弄清楚 PIL 是否已经足够快。
我本来想问 PIL 是否在背后使用了 OpenGL。但这可能不是个好问题,因为我了解到,要真正从 PyOpenGL 中获得速度上的好处,我需要将线条的顶点作为 NumPy 数组提交。所以即使 PIL 使用了 OpenGL,当我每次调用 PIL 来画每一条线时,我可能会失去很多速度上的优势,对吧?
有没有人有关于在绘制大量基本图形时 PIL 的速度的具体数据?
1 个回答
2
“在.png上画一些简单的线条”并不是一项计算量大的任务。
这看起来不太适合用GPU来处理,因为GPU更擅长处理复杂的任务。你要明白,图像最开始是加载在内存里的,所以你需要把这些数据发送到GPU的内存中,然后再把它取回来。这个过程会消耗几毫秒的时间,具体时间取决于图像的大小,而这些时间其实可以用来让CPU更有效地处理其他事情。
只有当你的应用程序需要进行大量的数学运算时,使用GPU才会有好处。