如何使用python / PIL将图像存储到redis中

时间:2013-03-05 13:30:16

标签: python redis python-imaging-library

我正在使用python和Image模块(PIL)来处理图像。

我想将图像对象的原始比特流存储到redis,以便其他人可以使用nginx& amp;来直接从redis读取图像。 httpredis。

所以,我的问题是如何获取Image对象的原始位并将其存储到redis中。

2 个答案:

答案 0 :(得分:14)

使用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

并验证我找回了一张图片。

答案 1 :(得分:1)

import redis
r =  redis.StrictRedis()
img = open("/path/to/img.jpeg","rb").read()
r.set("bild1",img)

也在这里工作!