Flaskでインスタンス変数を使用する正しい方法は、ユーザーとセッションを追加することですが、コンセプトをテストしようとしています。そのすべてを実行したくありませんただまだ。私は、Webアプリケーションが画像に異なる画像操作を実行できる変数に画像を読み込ませようとしています。明らかに、新しい要求ごとに画像上で操作のリストを実行し続ける必要はないので、ひどく非効率です。Flaskアプリケーションのメモリ内データ
Flaskにapp.var
という別のルートからアクセスできる方法はありますか?私はグローバルな文脈とFlaskのcurrent_app
を使ってみましたが、私は彼らのためではない印象を受けます。
私の青写真のためのコードは次のとおりです。
import os
from flask import Flask, url_for, render_template, \
g, send_file, Blueprint
from io import BytesIO
from PIL import Image, ImageDraw, ImageOps
home = Blueprint('home', __name__)
@home.before_request
def before_request():
g.img = None
g.user = None
@home.route('/')
def index():
return render_template('home/index.html')
@home.route('/image')
def image():
if g.img is None:
root = os.path.dirname(os.path.abspath(__file__))
filename = os.path.join(root, '../static/images/lena.jpg')
g.img = Image.open(filename)
img_bytes = BytesIO()
g.img.save(img_bytes, 'jpeg')
img_bytes.seek(0)
return send_file(img_bytes, mimetype='image/jpg')
@home.route('/grayscale', methods=['POST'])
def grayscale():
if g.img:
print('POST grayscale request')
g.img = ImageOps.grayscale(img)
return "Grayscale operation successful"
else:
print('Grayscale called with no image loaded')
return "Grayscale operation failed"
/image
ルートが正しくイメージを返しますが、私は、/grayscale
を呼び出すことができるようにしたい操作を行うと、に別の電話をかけることができるだろう/image
を読み込み、イメージを読み込まずにメモリから戻します。
いくつかのコードは、あなたが何をしているかを完全に理解するのに役立ちます。 – MrLeeh
が追加されました。私は遅れて質問を電話から投稿し、仕事に出たときに更新するのを忘れてしまった。 – geoffjay