【发布时间】:2020-10-12 09:32:00
【问题描述】:
所以我有一些 python 代码可以在我的 Flask 应用程序中生成图像(可以在 JPG、PNG 等中生成),我想在我的 Flask 应用程序上显示该图像。问题是它需要存在于“静态”文件夹中, 它是“只读的” - 所以我无法在其中创建图像。 我可以让“url_for”在其他目录中查找吗?或者以某种方式在运行时将我的图像文件写入“静态”文件夹?
【问题讨论】:
所以我有一些 python 代码可以在我的 Flask 应用程序中生成图像(可以在 JPG、PNG 等中生成),我想在我的 Flask 应用程序上显示该图像。问题是它需要存在于“静态”文件夹中, 它是“只读的” - 所以我无法在其中创建图像。 我可以让“url_for”在其他目录中查找吗?或者以某种方式在运行时将我的图像文件写入“静态”文件夹?
【问题讨论】:
我在我的一个宠物项目中遇到了类似的问题。我不确定是否有更好的方法来做到这一点,但我设法通过在 base64 中编码图像并通过render_template() 直接将图像标签传递给 html 文件来解决它。本质上:
import io
def serve_pil_image(pil_img):
img_io = io.BytesIO()
pil_img.save(img_io, 'jpeg', quality=100)
img_io.seek(0)
img = base64.b64encode(img_io.getvalue()).decode('ascii')
img_tag = f'<img src="data:image/jpg;base64,{img}" class="img-fluid"/>'
return img_tag
在你的烧瓶应用中:
from PIL import Image
@app.route('/')
def index():
my_image = Image.open(image_file)
img_tag=serve_pil_image(my_image)
return render_template('index.html', image=img_tag)
在你的 html 中:
{{image|safe}}
【讨论】: