2013-03-05 61 views
4

我正在使用python和圖像模塊(PIL)來處理圖像。如何使用python/PIL將圖像存儲到redis

我想將圖像對象的原始位流存儲到redis,以便其他人可以使用nginx & httpredis直接讀取來自redis的圖像。

所以,我的問題是如何獲取圖像對象的原始位,並將其存儲到redis中。

回答

13

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

並驗證我找回了圖像。

+0

非常感謝,讓我試試... – Ace 2013-03-05 14:53:01

+0

它的工作原理!謝謝!!! – Ace 2013-03-06 06:15:16

+0

@Ace真棒很高興它爲你工作:) – cwgem 2013-03-06 06:17:48

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

也在這裏工作!

相關問題