Redis
 sql >> Database >  >> NoSQL >> Redis

come memorizzare un'immagine in redis usando python / PIL

Usando PIL 1.1.7, redis-2.7.2 pip module e redis-2.4.10 sono riuscito a farlo funzionare:

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()

Ho trovato che Image.tostring non era affidabile, quindi questo metodo usa StringIO per far sembrare una stringa un file. Il format=im.format è necessario perché StringIO non ha una "estensione". Ho quindi testato che i dati dell'immagine sono stati salvati correttamente eseguendo:

redis-cli --raw get 'imagedata' >test.png

e verificando di aver ricevuto un'immagine.