Използвайки PIL 1.1.7, redis-2.7.2 pip модул и redis-2.4.10 успях да накарам това да работи:
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()
Намерих, че Image.tostring
не беше надежден, така че този метод използва StringIO
за да накарате низ да изглежда като файл. format=im.format
е необходимо, защото StringIO
няма "разширение". След това тествах, че данните за изображението бяха запазени добре, като направих:
redis-cli --raw get 'imagedata' >test.png
и потвърждаване, че съм получил обратно изображение.