用于裁剪和调整大小的PIL与Python GD

用于裁剪和调整大小的PIL与Python GD,python,ajax,gd,python-imaging-library,seadragon,Python,Ajax,Gd,Python Imaging Library,Seadragon,我正在创建自定义图像,稍后将其转换为Seadragon AJAX的图像金字塔。图像和图像金字塔是使用PIL创建的。目前,生成大约100张图片的图像和图像金字塔需要几个小时,这些图片的宽度和高度总和约为32000000 x 1000(是的,图像非常长且窄)。性能与我尝试过的另一种算法(即)大致相似。我计划看看pythongd是否会表现得更好,因为它的大部分功能都是用C语言编写的(来自gd库)。我会假设绩效显著提高,但我很想听听其他人的意见。特别是在PIL(w/Image.ANTIALIAS)中,调

我正在创建自定义图像,稍后将其转换为Seadragon AJAX的图像金字塔。图像和图像金字塔是使用PIL创建的。目前,生成大约100张图片的图像和图像金字塔需要几个小时,这些图片的宽度和高度总和约为32000000 x 1000(是的,图像非常长且窄)。性能与我尝试过的另一种算法(即)大致相似。我计划看看pythongd是否会表现得更好,因为它的大部分功能都是用C语言编写的(来自gd库)。我会假设绩效显著提高,但我很想听听其他人的意见。特别是在PIL(w/Image.ANTIALIAS)中,调整大小和裁剪速度较慢。如果我使用pythongd,这会有很大的改进吗

提前感谢您的意见和建议

编辑:PIL和PythonGD之间的性能差异似乎很小。我将重构代码以减少性能瓶颈,并包括对多处理器的支持。我已经测试了python的“多处理”模块。结果令人鼓舞。

PIL主要发生在C

抗锯齿是缓慢的。当您关闭抗锯齿功能时,速度会发生什么变化?

VIP包括一个。我计时了
deepzoom.py
,在我的机器上看到:

$ time ./wtc.py 
real    0m29.601s
user    0m29.158s
sys     0m0.408s
peak RES 450mb
其中,
wtc.jpg
是10000 x 10000像素的RGB jpg图像,
wtc.py
正在使用

VIP的速度约为三倍,需要四分之一的内存:

$ time vips dzsave wtc.jpg wtc --overlap 2 --tile-size 128 --suffix .png[compression=0]
real    0m10.819s
user    0m37.084s
sys     0m15.314s
peak RES 100mb

我不知道为什么sys会这么高

海龙看起来很酷。任务可以拆分为多个进程还是多台计算机?可以拆分。我希望避免这种情况,因为这需要对我的代码进行一些重要的重新分解,但看起来这可能是不可避免的。实际上,我在发布后尝试过这种方法。使用双线性会更快,并在美学上给出可比的结果。此外,调整大小方法的性能在PIL和PythonGD之间相当(速度相差10%)。