LoginSignup
11
18

More than 5 years have passed since last update.

FlaskとPILImageを使ってリサイズした画像をResponseする

Posted at

Webの画像をサムネイルにして表示したい!
ファイルシステムからの画像の読み書きは情報いっぱいあるんだけど、
メモリ上にキャッシュして処理したかったのでやってみた。

やりたいこと

  • 画像をリサイズしてサムネイルをつくりたい
  • Webから撮ってきた画像をファイルに書き出すことなくレスポンスを作りたい(メモリ上にキャッシュしたい)
  • Flaskで画像のレスポンスを返したい

方法

1. StringIOを使って画像のバイナリを受け取る

url = 'http://www.google.co.jp/intl/ja_jp/images/logo.gif'
buffer = urllib2.urlopen(url).read()
img = Image.open(StringIO(buffer))

2. 画像をリサイズしてStringIOに渡す

size = (120, 75)
img.thumbnail(size)
buf = StringIO()
img.save(buf, 'png')

3. レスポンスを作る

response = helpers.make_response(buf.getvalue())
response.headers["Content-type"] = "Image"
return response

コードはGithub

*参考
http://effbot.org/imagingbook/pil-index.htm

11
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
18