2024-05-23 17:53:16 发布
网友
我使用python和图像模块(PIL)来处理图像。
我想将图像对象的原始比特流存储到redis,以便其他人可以使用nginx&httpedis直接从redis读取图像。
所以,我的问题是如何获取图像对象的原始位并将其存储到redis中。
import redis r = redis.StrictRedis() img = open("/path/to/img.jpeg","rb").read() r.set("bild1",img)
也在这里工作!
使用PIL 1.1.7、redis-2.7.2pip模块和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没有“扩展名”。然后,我通过执行以下操作测试图像数据是否保存正常:
Image.tostring
StringIO
format=im.format
redis-cli --raw get 'imagedata' >test.png
并确认我得到了一个图像。
也在这里工作!
使用PIL 1.1.7、redis-2.7.2pip模块和redis-2.4.10,我可以让这个工作:
我发现
Image.tostring
不可靠,因此此方法使用StringIO
使字符串看起来是一个文件。需要format=im.format
,因为StringIO
没有“扩展名”。然后,我通过执行以下操作测试图像数据是否保存正常:并确认我得到了一个图像。
相关问题 更多 >
编程相关推荐