gpt4 book ai didi

python - flask 应用程序 : Load images from current working directory

转载 作者:可可西里 更新时间:2023-11-01 13:46:44 24 4
gpt4 key购买 nike

tl;dr 版本:如何让我的 Flask 应用程序加载不在项目目录中的图像?

我正在构建(作为一个有趣的项目)一个 Flask 应用程序,设计为命令行应用程序,它从浏览器中的当前工作目录加载随机图像。应用结构如下所示。

+-- imgdisplay/
+-- imgdisplay/
+-- imgdisplay.py
+-- static/
+-- styling.css
+-- templates/
+-- img.html
+-- setup.py
+-- LICENSE
+-- README.md

我的 setup.py 有一个 entry_points 关键字参数,如下所示:

entry_points={
'console_scripts': [
'imgdisplay=imgdisplay.imgdisplay:start_server'
]

这让我可以从任何地方启动命令行应用 imgdisplay。我已验证这部分工作没有问题。

我的 imgdisplay.py 代码如下所示:

from flask import Flask, render_template
import webview
import click
from random import choice
import os
import os.path as osp
import logging

app = Flask(__name__)


# logging.setLevel(logging.DEBUG)

@app.route('/')
def hello(name=None):
files = os.listdir(os.getcwd())
image = choice([f for f in files if f[-4:] == '.jpg'])
# tried the following line, but didn't work.
# image = osp.join(os.getcwd(), image)
# logging.info(image)
return render_template('img.html', name=name, files=files, image=image)


@click.command()
@click.option('--port', default=5000, help='Port', prompt='Port')
@click.option('--host', default='localhost', help='Host', prompt='Host')
def start_server(port=5000, host='localhost'):
app.run(host='localhost', port=port)


if __name__ == '__main__':
start_server()

我的 img.html 模板如下所示:

<!doctype html>
<head>
<link href="https://fonts.googleapis.com/css?family=PT+Sans" rel="stylesheet"></link>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styling.css') }}">
</head>
<body>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello, World!</h1>
{% endif %}

{{ image }}

{% if image %}
<img src="{{ image }}"></img>
{% endif %}

</body>

总而言之,这是一个非常简单的 Flask 应用程序。像我这样的菜鸟会构建的东西。

在我的桌面上,我有一个名为 images/ 的文件夹,我在其中放置了一张图片。我可以在浏览器中显示文件名字符串,但无法显示图像;我希望在浏览器中看到加载的图像,但我得到的只是显示无法找到图像的图标。请原谅我的笨拙,但我在这里缺少的关键概念是什么?

最佳答案

I can display the file name string in my browser

这不是浏览器的网络特性,它是浏览器本地文件系统特性,但是,当你把/home/yetship/images/test.jpg这样的路径放到html like这个:

<html>
<body>
<img src="/home/yetship/images"></img>
</body>
</html>

这肯定是行不通的,因为如果你在 url 中访问你的网站:http://localhost:8080,img 标签将无法在你的电脑中找到路径为 的图像/home/yetship/images 相反,它会在 http://localhost:8080/home/yetship/images 中找到图像,所以,如果你想让它显示,你应该遵循this guide使您的 image 目录成为静态目录,您应该将 img 标记为:

<img src="image/test.jpg"></img>

代替

<img src="/home/yetship/image/test.jpg"></img>

flask 会在你的 image 目录中找到图片并显示在你的浏览器上。

希望对您有所帮助。

关于python - flask 应用程序 : Load images from current working directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com