LoginSignup
3
2

More than 3 years have passed since last update.

Flask 画像の送受信

Posted at

概要

画像の送受信処理についての日本語の処理が少なかったので、まとめる。

サンプルコード

ここでは、画像のエコーバックのサンプルコードを示します。

送信/受信
@app.route("/echo_back", methods=['POST'])
def test():
    img_bin = io.BytesIO(request.data).getvalue() # 受信
    response = make_response(img_bin) # レスポンスに画像を設定
    response.headers.set('Content-Type', request.content_type) # ヘッダ設定

    return response

ポイントを以下に示します。
- 「request.data」の中に画像情報が格納されています。これをio.ByteIO型とすると、画像情報のみ取得できます。今回はエコーバックさせるので、getvalue()を用いてすぐにbytes型に変換しています。
- make_response()に画像情報を格納するとき、bytes型でないといけないようです。そのため、上記のようにgetvalue()にてbytes型としています。
- 最後に、headerに「Content-type」を設定しています。

途中に画像処理をする場合は適宜型を変換します。opencvであればnumpy配列でしょうかね。PILの場合はImage.open(io.BytesIO(request.data))みたいにすると良いんですかね。

テスト方法

自分は「POST MAN」を使用しています。ここでは、「POST MAN」を利用した場合の設定について説明します。

  • 通信は「POST」(今回はPOSTのみ許可しているので)
  • Headerに「Content-Type」を追加し、画像ファイルのファイルフォーマットに合わせて「Value」を設定
  • Bodyを「binary」に設定し、画像ファイルを選択

基本的には以上の設定としてください。これにより、送信したファイルがそのまま返信されることを確認できます。

3
2
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
3
2