我建立了一个可以摄取图像的模型,可以读取像素级别的图像,然后确定图像中包含猫还是狗。出于教育目的,我现在尝试将其放入Flask应用程序中(以前从未使用过Flask)。到目前为止,我的工作:用户上传图像,Flask将图像保存到磁盘,图像被操纵并发送到模型,模型预测,然后从模板生成输出页面。现在,我想显示用户上传的图像,但是遇到了问题。适用的代码在这里:
import flask
from flask import request, render_template
import numpy as np
import pandas as pd
from copy import deepcopy
from werkzeug import secure_filename
from PIL import Image
import catdog
# Initialize the app
app = flask.Flask(__name__)
@app.route("/")
def viz_page():
with open("frontend.html", 'r') as viz_file:
return viz_file.read()
@app.route("/uploader", methods=["GET","POST"])
def get_image():
if request.method == 'POST':
f = request.files['file']
sfname = 'images/'+str(secure_filename(f.filename))
f.save(sfname)
clf = catdog.classifier()
#clf.save_image(f.filename)
return render_template('result.html', pred = clf.predict(sfname), imgpath = sfname)
#--------- RUN WEB APP SERVER ------------#
# Start the app server on port 80
# (The default website port)
app.run(host='0.0.0.0', port=5000, debug=True)
和模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Dog vs Cat</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
</head>
<body>
<h3> Prediction: {{ pred }} </h3>
<br><br>
<img src={{imgpath}}>
<script>
</script>
</body>
</html>
我要返回的是“预测:yada yada”部分,该部分效果很好。但是,图像始终返回空白。当我看的时候http://localhost:5000/images/cat.4.jpg,我知道那是在不正确的位置,但是我不确定如何动态地获取想要的图像。
额外的问题:是否可能永远不保存图像,而只是将其不断保存在Flask中的内存中?理想情况下,我永远不会保存图像,只使用它,然后在做出预测后将其扔掉。
图片应保存在/ static文件夹中,因此只需将保存路径更改为static / images
sfname = 'static/images/'+str(secure_filename(f.filename))
这样HTML模板就可以准备好了
<img src="/static/images/your_image_here.jpg">
问题内容: 嗨,我对Flask很陌生,我想使用ajax调用将文件上传到服务器。如文档中所述,我将文件上传添加为以下格式: 我这样写了ajax处理程序 我不知道如何从中获取上传的文件(不是名称) 并将文件保存在文件夹中。我不太确定如何从我编写的处理程序中读取文件: 如果有人可以帮助,我将不胜感激。先感谢您 问题答案: 要回答您的问题… HTML: JavaScript: 现在,在flask的终结点视
问题内容: 我正在使用flask,并尝试使用快速入门教程(仅在我的计算机(本地服务器)上运行)做一些非常简单的事情。我制作了一个简单的上传表单,可以成功上传图像文件。然后,我想将此图像作为变量传递给,以在页面内显示。该文件显示正常,但图像始终为。我尝试了许多不同的方法,但是我感觉自己做的事情有点错误。 这是template.html: 如何将上传的图像文件传递到,template.html以便正确
我正在关注马丁·拉塞克的教程,现在我正在“图片上传”。似乎没有人能回答“如何上传图片i Vapor 3”这个问题 db连接正常,所有其他值都被保存。 这是mye创建方法: 和型号: } 和叶模板: 我知道需要一种管理文件的方法,原始图像字节, 但是我怎么去那里呢?
问题内容: 我想知道如何通过创建API服务来上传文件? 路线 然后是HTML 我已经在服务器端启用了CORS 如果重要的话,我正在使用angular.js作为前端和ng-upload,但是也可以使用CURL语句! 问题答案: 您应该处理流,如果它是wav,则上面的代码有效。对于图像,您应该存储在数据库上或上传到AWS S3或Google Storage
问题内容: 有没有办法用Flask接收多个上传的文件?我尝试了以下方法: 然后打印内容 如果我上传多个文件,它将仅打印该集中的第一个文件: 是否可以使用Flask的内置上传处理方式接收多个文件?谢谢你的帮助! 问题答案: 你可以使用flask.request.files的方法getlist,例如:
问题内容: 这是我上传多个文件的代码: HTML代码: 密码: 但是它会上传单个文件,而不是多个文件。 问题答案: 在模板中,你需要在上传输入中添加属性: 然后在查看功能中,上传的文件可以通过列表获取。循环此列表并在每个项目上调用save()方法将它们保存在给定路径中: 此外,你可能需要使用secure_filename()来清洁文件名: 你也可以使用此方法生成随机文件名。 完整演示 视图: im