You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flask框架中实现Python重写图像的读取功能?附现有代码

在Flask中展示经Python处理后的图像

看起来你已经搭好了基础的Flask表单流程,但目前的代码还没把generateimage()生成/处理后的图像传递给前端展示。我给你两种实用的解决方案,你可以根据场景选择:

方案一:保存图像到静态目录,通过静态URL访问

这种方式适合需要长期保留图像、或者图像文件较大的场景,管理起来更直观。

修改Flask后端代码

先确保导入必要模块,同时调整generateimage()函数,让它返回图像在静态目录中的相对路径:

from flask import Flask, render_template, request
import os
# 假设你用PIL/Pillow处理图像,根据实际库调整
from PIL import Image

app = Flask(__name__, static_url_path='/static')
# 自动创建生成图像的存储目录,避免报错
os.makedirs(os.path.join(app.root_path, 'static', 'generated_images'), exist_ok=True)

def generateimage(text):
    # 这里替换成你的图像处理逻辑(比如根据text生成/修改图像)
    # 示例:生成一个纯色测试图
    img = Image.new('RGB', (300, 300), color=(100, 200, 150))
    # 生成唯一文件名,防止覆盖旧图像
    img_filename = f"img_{text.replace(' ', '_')}.png"
    img_save_path = os.path.join(app.root_path, 'static', 'generated_images', img_filename)
    img.save(img_save_path)
    # 返回相对静态目录的路径,供模板调用
    return f"generated_images/{img_filename}"

@app.route('/')
def my_form():
    return render_template('my-form.html')

@app.route('/result', methods=['POST'])
def result():
    text = request.form['Name']
    # 获取生成的图像路径
    image_relative_path = generateimage(text)
    # 把路径传递给模板
    return render_template("result.html", image_url=image_relative_path)

修改result.html模板

在模板中添加<img>标签,通过Flask的url_for生成静态资源链接:

<!-- 其他页面内容 -->
<div class="col-lg-10">
    <h3>处理完成的图像:</h3>
    <img src="{{ url_for('static', filename=image_url) }}" alt="Generated Image" class="img-fluid">
</div>
<!-- 其他页面内容 -->

方案二:用Base64编码直接嵌入图像(无需保存文件)

如果不需要保留图像文件,或者想避免文件管理的麻烦,可以把图像转成Base64字符串直接嵌入HTML,适合小型图像场景。

修改Flask后端代码

from flask import Flask, render_template, request
from PIL import Image
import io
import base64

app = Flask(__name__, static_url_path='/static')

def generateimage(text):
    # 你的图像处理逻辑
    img = Image.new('RGB', (300, 300), color=(100, 200, 150))
    # 将图像写入内存流,不保存到本地
    img_io = io.BytesIO()
    img.save(img_io, 'PNG')
    img_io.seek(0)
    # 转成Base64字符串并拼接成data URI格式
    img_base64 = base64.b64encode(img_io.getvalue()).decode('utf-8')
    return f"data:image/png;base64,{img_base64}"

@app.route('/')
def my_form():
    return render_template('my-form.html')

@app.route('/result', methods=['POST'])
def result():
    text = request.form['Name']
    image_base64_data = generateimage(text)
    return render_template("result.html", image_data=image_base64_data)

修改result.html模板

直接用Base64数据作为img的src属性:

<!-- 其他页面内容 -->
<div class="col-lg-10">
    <h3>处理完成的图像:</h3>
    <img src="{{ image_data }}" alt="Generated Image" class="img-fluid">
</div>
<!-- 其他页面内容 -->

额外小优化

你的表单用了绝对路径http://localhost:5505/result,可以改成相对路径/result,这样部署到不同环境时不用修改:

<form action="/result" method="POST">

内容的提问来源于stack exchange,提问作者Abhay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:22:46