2012-02-05 4 views
1

У меня есть объект Gtk.Image, и я хочу преобразовать его данные в кодировку base64 (для использования с imgur). Как мне это достичь?Как преобразовать Gtk.Image в base64

+0

Я предполагаю, что вы хотите в кодировке Base64 формата файла изображения (PNG, JPEG, GIF, и т.д .. .), а не фактический объект Gtk.Image, не так ли? – Mark

+0

Да, я думаю, imgur ожидает, что base64 закодирован png, jpeg et cetera – Leon

+0

Итак, каков источник данных, которые загружаются в Gtk.Image? Загружается ли он из такого файла? – Mark

ответ

1

Has запустить его через 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

+0

Возможным обходным путем является получение данных изображения с помощью 'pixbuf.get_pixels' (возвращает str) или 'pixbuf.get_pixels_array' (возвращает массив numpy), а затем пройти через Cairo или PIL; не уверен, как, хотя. –

Смежные вопросы