我正在使用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