环境:Debian 11、Python 3.9.2、PyObject GTK 3.0、WAND 0.6.5
我目前使用 PIL 并在 GTK 中加载图像:
data = pil_img.tobytes()
pixbuf = GdkPixbuf.Pixbuf.new_from_data(data, ...)
我想用 WAND 做同样的事情,并尝试过
data = wand_img.make_blob()
但它不起作用,GTK 回答“构造函数返回 NULL”
幸亏使用了 numpy 的作品:
data = numpy.array(wand_img).tobytes()
那又怎样?问题是,通过 numpy 非常慢,与 PIL 相比,导致我损失了 400 毫秒,这使得应用程序的响应速度大大降低。
有没有一种方法可以在不使用 numpy 的情况下将 WAND 图像转换为字节?
Image.export_pixels()
w, h = img.size
rgb = GdkPixbuf.Colorspace.RGB
data = img.export_pixels()
pixbuf = GdkPixbuf.Pixbuf.new_from_data(data, rgb, True, 8, w, h, w*4)
还可以考虑使用 ImageMagick 的 Q8 版本。 400ms 可能与每样本 16 位缩小到 8 位有关。