2012-02-05 54 views
1

我有一個Gtk.Image對象,我想將它的數據轉換爲base64編碼的字符串(用於imgur)。我將如何實現這一目標?如何將Gtk.Image轉換爲base64

+0

我猜你想有一個文件的圖像格式(PNG,JPEG,GIF等的base64編碼字符串.. 。)而不是一個實際的Gtk.Image對象,對吧? – Mark 2012-02-05 15:14:14

+0

是的,我認爲imgur預計base64編碼的png,jpeg et cetera – Leon 2012-02-05 15:19:49

+0

那麼,什麼是數據的來源加載到Gtk.Image?它是否從這樣的文件加載? – Mark 2012-02-05 15:21:48

回答

1

已經走過了gdk.pixbuf來運行它,但這似乎最簡單的:

import cStringIO 
import base64 

pixBuf = gtkImage.get_pixbuf() 

fH = cStringIO.StringIO() 
pixBuf.save_to_callback(fH.write, "png") 
encodedBuffer = base64.b64encode(fH.getvalue()) #base64 encoded png 
+0

我相信這是正確的答案。但不幸的是,這些方法似乎[在Ubuntu上破壞](https://bugs.launchpad.net/ubuntu/+bug/888305)... – Leon 2012-02-05 16:01:16

+0

可能的解決方法是使用'pixbuf.get_pixels'獲取圖像數據(返回str )或'pixbuf.get_pixels_array'(返回numpy數組),然後通過Cairo或PIL;不知道如何,但。 – 2012-02-06 00:57:42