You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:00