En utilisant PIL 1.1.7, le module redis-2.7.2 pip et redis-2.4.10, j'ai pu faire fonctionner ceci :
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()
J'ai trouvé que Image.tostring
n'était pas fiable, donc cette méthode utilise StringIO
pour faire apparaître une chaîne comme un fichier. Le format=im.format
est nécessaire car StringIO
n'a pas d'"extension". J'ai ensuite testé que les données d'image étaient bien enregistrées en faisant :
redis-cli --raw get 'imagedata' >test.png
et vérifier que j'ai récupéré une image.