我已经用GTK+2 (pygtk)写了一个python程序。现在我想将程序更新到GTK+3,所以我必须使用pyGObject而不是pygtk。
我的问题是,我必须从GdkPixbuf.Pixbuf对象上的单个像素获取颜色。
在pygtk中,我可以只使用Pixbuf.get_pixels_array()来获得一个包含所有像素的n数组。
在pyGObject中没有Pixbuf.get_pixels_array(),所以我必须使用Pixbuf.get_pixels(),它会返回一个字符串。
有人知道如何从这个字符串中获取单独的像素吗?
(在C中,Pixbuf.get_pixels_array()返回一个指针,所以您可以这样做:http://developer.gimp.org/api/2.0/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#image-data,但在python中,它返回一个字符串)
谢谢你的帮助。
发布于 2014-04-18 04:24:35
它不是一个字符串,它是一个字节数组。您可以从list: mybyte2:4获得值(int);如果打印出来,是的,将显示chr()值。注意图像类型并检查“字符串”的长度:对于png,每个像素有4个值(RGBA),对于'RGB‘jpeg - 3,对于'L’- 1。像往常一样,这些值在0-255范围内。附注:这些值没有被分割成带,所以jpg中的像素1在索引0处具有RGB,在3,4,5处具有1,2像素2,依此类推
发布于 2019-02-27 22:04:31
在我对How to turn Gdk pixbuf object into numpy array问题的回答中,您可能会发现有两个函数可以在GdxPixbuf和numpy数组之间来回转换;一旦您将数据转换成numpy数组,操作起来就容易多了
https://stackoverflow.com/questions/23140193
复制相似问题