bsk*_*1ch 11 python gtk image-processing python-imaging-library
我想看看是否有另一种方法将PIL图像转换为GTK Pixbuf.现在,我所拥有的只是看起来像我发现的低效编码实践,并且已经破解了我的需求.这是我到目前为止:
def image2pixbuf(self,im):
file1 = StringIO.StringIO()
im.save(file1, "ppm")
contents = file1.getvalue()
file1.close()
loader = gtk.gdk.PixbufLoader("pnm")
loader.write(contents, len(contents))
pixbuf = loader.get_pixbuf()
loader.close()
return pixbuf
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来完成我错过的转换?
max*_*axy 10
如果你通过一个numpy数组,你可以有效地做到这一点:
import numpy
arr = numpy.array(im)
return gtk.gdk.pixbuf_new_from_array(arr, gtk.gdk.COLORSPACE_RGB, 8)
Run Code Online (Sandbox Code Playgroud)
如果你正在使用PyGI和GTK + 3,这里有一个替代方案,它也不需要依赖numpy:
import array
from gi.repository import GdkPixbuf
def image2pixbuf(self,im):
arr = array.array('B', im.tostring())
width, height = im.size
return GdkPixbuf.Pixbuf.new_from_data(arr, GdkPixbuf.Colorspace.RGB,
True, 8, width, height, width * 4)
Run Code Online (Sandbox Code Playgroud)