Sử dụng PIL 1.1.7, mô-đun redis-2.7.2 pip và redis-2.4.10, tôi đã có thể làm cho điều này hoạt động:
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()
Tôi thấy rằng Image.tostring
không đáng tin cậy, vì vậy phương pháp này sử dụng StringIO
để làm cho một chuỗi có vẻ như là một tệp. format=im.format
là cần thiết vì StringIO
không có "phần mở rộng". Sau đó, tôi đã kiểm tra dữ liệu hình ảnh đã được lưu ổn chưa bằng cách thực hiện:
redis-cli --raw get 'imagedata' >test.png
và xác minh, tôi đã nhận lại một hình ảnh.