我正在使用python和图像模块(PIL)来处理图像。如何使用python/PIL将图像存储到redis
我想将图像对象的原始位流存储到redis,以便其他人可以使用nginx & httpredis直接读取来自redis的图像。
所以,我的问题是如何获取图像对象的原始位,并将其存储到redis中。
我正在使用python和图像模块(PIL)来处理图像。如何使用python/PIL将图像存储到redis
我想将图像对象的原始位流存储到redis,以便其他人可以使用nginx & httpredis直接读取来自redis的图像。
所以,我的问题是如何获取图像对象的原始位,并将其存储到redis中。
使用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
并验证我找回了图像。
import redis
r = redis.StrictRedis()
img = open("/path/to/img.jpeg","rb").read()
r.set("bild1",img)
也在这里工作!
非常感谢,让我试试... – Ace 2013-03-05 14:53:01
它的工作原理!谢谢!!! – Ace 2013-03-06 06:15:16
@Ace真棒很高兴它为你工作:) – cwgem 2013-03-06 06:17:48