如何在Flask服务器上展示本地图片,实现随机显示表情包功能?
Flask随机展示本地表情包最简实现方案
前置准备
先按照以下结构组织你的项目文件:
项目根目录 ├── app.py # Flask主程序文件 └── static/ └── memes/ # 所有表情包存放目录,支持jpg/png/gif等常见图片格式 ├── xxx.jpg ├── yyy.gif └── zzz.png
核心代码
将以下代码写入app.py即可实现需求:
from flask import Flask, send_from_directory import os import random app = Flask(__name__) # 配置表情包目录的绝对路径 MEME_DIR = os.path.join(app.root_path, 'static', 'memes') @app.route('/') def show_random_meme(): # 筛选目录下的所有合法文件 meme_list = [f for f in os.listdir(MEME_DIR) if os.path.isfile(os.path.join(MEME_DIR, f))] # 随机抽取一张表情包 chosen_meme = random.choice(meme_list) # 直接返回图片文件,浏览器会自动渲染展示 return send_from_directory(MEME_DIR, chosen_meme) if __name__ == '__main__': app.run(debug=True)
运行效果
启动程序后访问http://127.0.0.1:5000,每次刷新页面都会随机展示一张表情包,无需额外编写HTML页面。
可选优化
- 如果需要过滤非图片文件,避免返回其他格式的文件,可以修改文件筛选逻辑:
ALLOWED_EXTS = {'png', 'jpg', 'jpeg', 'gif', 'webp'} meme_list = [ f for f in os.listdir(MEME_DIR) if os.path.isfile(os.path.join(MEME_DIR, f)) and f.rsplit('.', 1)[-1].lower() in ALLOWED_EXTS ] - 如果需要将表情包嵌套在自定义网页中,可以额外加一个路由返回HTML:
@app.route('/meme-page') def meme_page(): return ''' <!DOCTYPE html> <html> <head><title>随机表情包</title></head> <body style="text-align: center; padding-top: 20px;"> <h1>今日好运表情包</h1> <img src="/" style="max-width: 90%; border-radius: 8px;"> </body> </html> ''' - 表情包数量较多时,可以提前缓存文件列表,不用每次请求都遍历目录,提升响应速度。
内容的提问来源于stack exchange,提问作者LordAliander
相关产品推荐
相关产品推荐

