私はpythonとImageモジュール(PIL)を使って画像を処理しています。
イメージ オブジェクトの raw ビット ストリームを redis に保存して、他のユーザーが nginx と httpredis を使用して redis からイメージを直接読み取れるようにしたいと考えています。
したがって、私の質問は、Image オブジェクトの生のビットを取得して、それを redis に格納する方法です。
私はpythonとImageモジュール(PIL)を使って画像を処理しています。
イメージ オブジェクトの raw ビット ストリームを redis に保存して、他のユーザーが nginx と httpredis を使用して redis からイメージを直接読み取れるようにしたいと考えています。
したがって、私の質問は、Image オブジェクトの生のビットを取得して、それを 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)
ここでも活躍!