python 简单web显示图片
这是一个轻量级的本地服务器。可以在PC/嵌入式上跑。实现的功能是,把你的图片展示在页面上,可以用手机和平板电脑或者其他电脑查看。
当然,这要保证你的几个设备在同一个网络中。
清单
安装
pip install -r requirements.txt
配置图片目录
我们的目的是展示图片,那么我们的static目录下必须有图片
这是在images下创建了照片就存在这
使用
python.exe -m flask run --host=0.0.0.0
远程使用
如果你的手机或者平板电脑查看图片的时候,需要你的笔记本打开热点,然后手机连上。在浏览器输入上述地址就可以访问
或者在家里,手机连上WiFi的情况下,电脑和手机一般都在同一个网络。可以直接在浏览器输入地址,即可访问
就比如这样:
源代码
from flask import Flask
from flask import render_template
import os
import base64
app = Flask(__name__)
@app.route('/')
def index():
base_path = ".\\static\\images".replace("\\", "/")
dir_links, image_tags = whatever(base_path)
return render_template('index.html', path_list=dir_links, file_list=image_tags)
@app.route("/<clicked_path>" , methods=['GET', 'POST'])
def dealing_dir_input(clicked_path):
the_path = base64.b64decode(clicked_path.replace("*", "/")).decode()
dir_links, image_tags = whatever(the_path)
return render_template('index.html', path_list=dir_links, file_list=image_tags)
@app.route('/favicon.ico')
def favicon():
return app.send_static_file('favicon.ico')
def whatever(base_path):
dirs, files = get_content_list(base_path)
image_tags = []
for file in files:
if file.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')):
image_tag = '<p><img style="%s" alt="%s" src="/static/images/%s"></p>' % ("width:50%", file, file)
image_tags.append(image_tag)
dir_links = []
for d in dirs:
url = base64.b64encode(d.encode(encoding="utf-8")).decode(encoding='utf-8').replace("/", "*")
title = d.split('/')[-1]
link = """<p><a href="%s">%s</a></p>""" % (url, title)
dir_links.append(link)
return dir_links, image_tags
def get_content_list(base_path):
if os.path.isfile(base_path):
return [], [base_path]
contents = os.listdir(base_path)
file_list = []
dir_list = []
for c in contents:
f = os.path.join(base_path, c)
file_list.append(f.replace("\\", "/")) if os.path.isfile(f) else dir_list.append(f.replace("\\", "/"))
tmp = []
for file in file_list:
tmp.append(file.split('images')[-1])
file_list = tmp
return dir_list, file_list
if __name__ == '__main__':
app.run(host="0.0.0.0", port="8080")