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.