ChatGPT:4. 使用OpenAI API创建自己的AI网站:3. flask web框架将OpenAI 创作的图片显示在网页界面上

ChatGPT:4. 使用OpenAI API创建自己的AI网站:3. flask web框架将OpenAI 创作的图片显示在网页界面上

如果你还是一个OpenAI的小白,有OpenAI的账号,但想调用OpenAI的API搞一些有意思的事,那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新,进度慢,请海涵🥳。

3. 🎖️flask web框架将OpenAI 创作的图片显示在网页界面上

🐒回顾:上一节,我们使用flask框架搭建了网站主体,按下网页按钮后,将界面文本框的文字传递给后端,后端接收内容后调用OpenAI API 向OpenAI请求一张图片,返回图片的url。跳转到上一节

🐹今天我们继续上一节内容,将返回的图片显示在界面上。

🐰1. 我们想要实现的是:输入请求的内容 → 按下按钮 → 界面刷新 → 显示图片。

🐇2. Html界面需要添加一个div标签,内容为{{ result }}。result是后端传来的变量,存放的是OpenAI返回的图片url。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/" method="post">
        <input type="text" name="desc" placeholder="请输入描述信息">
        <button>创作图画</button>

</form>
<!--显示图片-->
<div>
    {{ result }}
</div>
</body>
</html>

🦇3. 后台代码如下。需要增加:return redirect(url_for(‘index’, result=image_url)) 该处目的是,前端按下按钮后,后端接收文本后请求,返回url,再刷新本页面,将result返回到前端界面上。

from flask import Flask, render_template, request, redirect, url_for
import openai

api_key = "sk-e4F4owyBicdBYKA9RuuMT3BlbkFJ7"  # 此处是自己的API Key
openai.api_key = api_key


app = Flask(__name__)


@app.route('/', methods=['GET', 'POST'])
def index():
    # 此处我们应该接收html界面的文本
    if request.method == 'POST':  # 接收表单处理
        desc = request.form['desc']
        print(desc)

        # 此处为OpenAI的API代码
        response = openai.Image.create(
            prompt=desc,
            n=1,
            size="1024x1024"
        )

        image_url = response['data'][0]['url']

        print(image_url)
        return redirect(url_for('index', result=image_url))  # 跳转到当前界面下,并将image_url返回到页面中

    return render_template('index.html')


@app.route('/debug')
def debug():
    return 'I am Demo.'


if __name__ == '__main__':
    app.run(debug=True, port=8888)

🐻4. 此时提交需求后,界面被刷新,等待几秒界面如下图。可以看到url并没有显示到界面,而是显示到了网址中。
在这里插入图片描述
🦔5. 图片的url传递到界面的网址里,是因为使用了url_for这个方法。执行:return redirect(url_for(‘index’, result=image_url)) 后,界面请求变为GET,因此在后端将不再执行 if request.method == ‘POST’: 下面的代码。此处增加GET请求的代码,将result传给前端界面的{{ result }}变量。

from flask import Flask, render_template, request, redirect, url_for
import openai

api_key = "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"  # 此处是自己的API Key
openai.api_key = api_key


app = Flask(__name__)


@app.route('/', methods=['GET', 'POST'])
def index():

    # 接收POST请求
    if request.method == 'POST':  # 接收表单处理
        desc = request.form['desc']
        print(desc)

        # 此处为OpenAI的API代码
        response = openai.Image.create(
            prompt=desc,
            n=1,
            size="1024x1024"
        )

        image_url = response['data'][0]['url']

        print(image_url)
        return redirect(url_for('index', result=image_url))  # 跳转到当前界面下,并将image_url返回到页面中

    # 接收GET请求
    elif request.method == 'POST':  # 接收表单处理
        result = request.args.get("result")
        return render_template('index.html', result=result)




@app.route('/debug')
def debug():
    return 'I am Demo.'


if __name__ == '__main__':
    app.run(debug=True, port=8888)


🦦6. 重新提交表单,可以看到界面显示了result值。
在这里插入图片描述
🐨7. 为了把图片显示到界面,我们在html文件中增加一个图片标签。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/" method="post">
        <input type="text" name="desc" placeholder="请输入描述信息">
        <button>创作图画</button>

</form>
<!--显示图片-->
<div>
    {{ result }}
    {% if result %}
        <img src="{{ result }}" alt="">
    {% endif %}
</div>
</body>
</html>

🐼8. 显示界面如下:
在这里插入图片描述

🦚9. 下一节,我们将增加图片下载按钮。未完待续,请持续关注~
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个简单的示例代码,可以实现网页上的图片数据传输,并提供了一个数据传输的界面窗口。 ```python from flask import Flask, request, render_template app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': file = request.files['file'] # 获取上传的图片文件 # 在这里可以对图片进行处理或保存等操作 return '已成功传输图片:{}'.format(file.filename) return render_template('index.html') if __name__ == '__main__': app.run() ``` 在上面的示例中,我们同样使用Flask 框架来实现网页应用。在 `index()` 函数中,当用户访问网页时,如果是 POST 请求,就获取上传的图片文件,并进行处理或保存等操作,最后返回传输成功的信息;如果是 GET 请求,就渲染一个名为 `index.html` 的模板,该模板包含一个文件选择框和一个提交按钮,用于选择并传输图片。 下面是 `index.html` 模板的代码: ```html <!DOCTYPE html> <html> <head> <title>图片数据传输</title> </head> <body> <h1>请选择要传输的图片:</h1> <form method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="传输"> </form> </body> </html> ``` 需要注意的是,由于我们要上传文件,所以在表单中需要添加 `enctype="multipart/form-data"` 属性。 您可以将上述代码保存为 `app.py` 和 `templates/index.html` 两个文件,然后在命令行中运行 `python app.py` 启动应用,即可在浏览器中访问网页并进行图片数据传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小Demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值