2017-06-18 8 views
0

PIL.Image tobytes()と同じgtkは何ですか?python gtk相当のPIL.Image tobytes()

i = PIL.Image.open('image.png') 
data = i.tobytes() 

私はGTKで画面を取得し、前のPILと同じバイトに、それを変換しようとしています:あなたはpixbuf.get_pixels()ため

import gtk, PIL.Image 

img_width = gtk.gdk.screen_width() 
img_height = gtk.gdk.screen_height() 
data = gtk.gdk.Pixbuf(
    gtk.gdk.COLORSPACE_RGB, 
    False, 
    8, 
    img_width, 
    img_height 
) 
data.get_from_drawable(
    gtk.gdk.get_default_root_window(), 
    gtk.gdk.colormap_get_system(), 
    0, 0, 0, 0, 
    img_width, 
    img_height 
) 
data = data.tobytes() #<-- here trying to get bytes 
+0

あなたはgtkの古いバージョンを使用していることをご存知ですか?現在のバージョンはGtk3で、 'gi.repository import Gtk'からインポートします。 –

答えて

0

探しています。返されるデータは、パディング含有することが可能だ

注:左から右へ画像における

行は上から下へ格納されているが、各行の画素には に格納されています。行末にパディングがある場合があります。 gdk_pixbuf_get_rowstride()によって返されるpixbufの「rowstride」値は、 行の間のバイト数を示します。

hereから。)

このパディングを削除するか、あるいはないパディングを有する生RGB形式の画像を保存するために、pixbuf.save_to_callbackを使用する文字列/バイト・オペレーションを使用することができます。

+0

優秀!ありがとうございました – peter