3

我使用 GTK+2 (pygtk) 编写了一个 python 程序。现在我想将程序更新到 GTK+3,所以我必须使用 pyGObject 而不是 pygtk。
我的问题是,我必须从 GdkPixbuf.Pixbuf 对象上的单个像素中获取颜色。
在 pygtk 中,我可以只使用 Pixbuf.get_pixels_array() 来获取包含所有像素的数组。
在 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中它返回一个字符串)

感谢您的帮助。

4

2 回答 2

2

它不是一个字符串,它是一个字节数组。您可能会从列表中获取值 (int):mybyte[2:4]; 如果你打印这个,是的,会显示 chr() 值。注意图像类型并检查“字符串”的长度:对于 png,每个像素有 4 个值 (RGBA),对于 'RGB' jpeg - 3,对于'L' - 1。这些值在 0 范围内-255,像往常一样。PS:这些值没有按波段分割,因此 jpg 中的像素 1 在索引 0、1、2 处具有 RGB 像素 2 在 3、4、5 处,依此类推

于 2014-04-17T20:24:34.943 回答
1

在我对如何将 Gdk pixbuf 对象转换为 numpy 数组的问题的回答中, 您可能会发现两个函数将 GdxPixbuf 转换为 numpy 数组,然后返回;一旦将数据放入 numpy 数组中,操作它们就会容易得多

于 2019-02-27T14:04:30.837 回答