Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

como armazenar uma imagem em redis usando python/PIL


Usando o módulo PIL 1.1.7, redis-2.7.2 pip e redis-2.4.10, consegui fazer isso funcionar:
import Image
import redis
import StringIO

output = StringIO.StringIO()
im = Image.open("/home/cwgem/Pictures/portrait.png")
im.save(output, format=im.format)

r = redis.StrictRedis(host='localhost')
r.set('imagedata', output.getvalue())
output.close()

Descobri que Image.tostring não era confiável, então este método usa StringIO para fazer uma string parecer um arquivo. O format=im.format é necessário porque StringIO não tem uma "extensão". Eu então testei os dados da imagem foram salvos bem fazendo:
redis-cli --raw get 'imagedata' >test.png

e verificando se recebi de volta uma imagem.