Carregar dados de imagem de blob no QPixmap
Eu estou escrevendo um programa usando PyQt4 para GUI front-end e este programa acessa um banco de dados back-end (que pode ser o MySQL ou SQLite). Eu preciso armazenar alguns dados de imagem no banco de dados e abaixo está o código Python que eu uso para importar arquivos de imagem (no formato JPEG) para um campo de dados de blob no banco de dados:
def dump_image(imgfile):
i = open(imgfile, 'rb')
i.seek(0)
w = i.read()
i.close()
return cPickle.dumps(w,1)
blob = dump_image(imgfile)
hex_str = blob.encode('hex')
# x"%s"%hex_str will be the string inserted into the SQL command
Esta parte funciona bem. Minha pergunta é sobre como criar um objeto QPixmap a partir dos dados de imagem armazenados no banco de dados no PyQt4. Minha abordagem atual envolve as seguintes etapas:
(1) Hex str no banco de dados - cPickle & StringIO -> PIL Image Object
def load_image(s):
o = cPickle.loads(s)
c = StringIO.StringIO()
c.write(o)
c.seek(0)
im = Image.open(c)
return im
(2) PIL Image Object -> arquivo de imagem temporária
(3) Arquivo de imagem temporária -> QPixmap
Essa abordagem também funciona bem. Mas seria melhor se eu não tivesse que gravar / ler arquivos de imagem temporários, o que poderia retardar a resposta do programa às interações do usuário. Eu acho que eu poderia usarQPixmap :: loadFromData () para carregar diretamente a partir dos dados do blob armazenados no banco de dados e espero que alguém aqui possa me mostrar um exemplo de como usar essa função.
TIA,
Bing