本教程详细阐述了如何在streamlit应用中加载并显示来自本地文件夹的多个gif图片。通过利用python的glob模块进行文件路径匹配,结合base64编码将gif内容嵌入到html的标签中,我们提供了一种健壮且跨平台兼容的解决方案。文章将涵盖环境配置、代码实现细节以及关键注意事项,确保用户能够成功地在streamlit界面中展示动态图片。
在开发Streamlit应用时,经常需要展示本地存储的图片或动态图,例如GIF。直接使用st.image()虽然方便,但在处理批量本地GIF文件时,尤其是在需要动态加载和显示的情况下,可能会遇到路径解析或兼容性问题。本教程旨在提供一个可靠的方法,通过将GIF文件内容编码为Base64字符串并嵌入到HTML中,从而在Streamlit应用中无缝地显示多个本地GIF。
Streamlit的st.markdown()函数允许渲染HTML内容,并通过设置unsafe_allow_html=True来启用此功能。利用这一特性,我们可以将本地GIF文件的二进制内容读取出来,然后使用Base64编码将其转换为字符串,最终嵌入到标准的标签的src属性中。这种方法绕过了直接处理文件路径的复杂性,尤其是在部署到不同操作系统环境时。
以下是详细的实现步骤,包括必要的模块导入、路径配置、文件查找与显示逻辑。
导入所需模块 我们需要streamlit用于构建UI,base64用于编码GIF内容,os用于操作系统路径操作,glob用于文件模式匹配,以及platform用于识别当前操作系统。
import streamlit as st import base64 import os import glob import platform
确定工作目录与GIF文件夹路径 为了确保代码在不同环境下都能正确找到文件,我们需要首先确定当前脚本的绝对路径,并据此构建GIF文件所在的目录路径。同时,需要考虑Windows和类Unix系统路径分隔符的差异。
sys_platform = platform.system()
work_dir = os.path.dirname(os.path.abspath(__file__))
# 根据操作系统确定GIF文件夹路径
if sys_platform == "Windows":
gif_folder_path = os.path.join(work_dir, "forecast", "fr")
else:
gif_folder_path = os.path.join(work_dir, "forecast", "fr") # 示例路径,根据实际情况调整注意:os.path.join是构建路径的最佳实践,它会自动处理不同操作系统的路径分隔符。原代码中手动拼接\或/可能导致错误。
查找所有GIF文件glob模块提供了一种强大的方式来查找符合特定模式的文件。通过切换到GIF文件夹目录,然后使用glob.glob("*.gif"),我们可以轻松获取该目录下所有GIF文件的列表。
PHP5 和 MySQL 圣经
本书是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。本书涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。
466
查看详情
# 切换到GIF文件夹,以便glob能正确匹配文件名 # 注意:os.chdir()会改变整个Python进程的当前工作目录, # 如果应用中有其他需要相对路径的操作,请谨慎使用或在操作完成后切换回原目录。 # 另一种更安全的方式是使用glob.glob(os.path.join(gif_folder_path, "*.gif")) # 推荐使用更安全的glob方式,避免改变工作目录 gif_files = glob.glob(os.path.join(gif_folder_path, "*.gif"))
与原始问题中os.listdir的潜在问题(它只返回文件名,而不是完整路径,导致os.path.isfile(f)在当前工作目录而非目标目录查找)相比,glob方法更加健壮。
循环显示GIF文件 遍历找到的GIF文件列表,对每个文件执行以下操作:
for file_path in gif_files:
with open(file_path, "rb") as file_:
contents = file_.read()
data_url = base64.b64encode(contents).decode("utf-8")
st.markdown(
f'@@##@@',
unsafe_allow_html=True,
)这里添加了alt属性以提高可访问性,并设置了style="max-width:100%;"以确保GIF图片能自适应Streamlit布局。
将以上步骤整合,得到以下完整的Streamlit应用代码:
import streamlit as st
import base64
import os
import glob
import platform
# 1. 确定工作目录和GIF文件夹路径
sys_platform = platform.system()
work_dir = os.path.dirname(os.path.abspath(__file__))
# 示例:假设GIF文件在 'your_app_root/forecast/fr/' 目录下
# 请根据实际情况调整 'forecast/fr' 部分
if sys_platform == "Windows":
gif_folder_path = os.path.join(work_dir, "forecast", "fr")
else:
gif_folder_path = os.path.join(work_dir, "forecast", "fr")
st.title("本地GIF集合展示")
st.write(f"正在从目录: `{gif_folder_path}` 加载GIF文件...")
# 2. 确保GIF文件夹存在
if not os.path.isdir(gif_folder_path):
st.error(f"错误:GIF文件夹不存在或路径不正确:`{gif_folder_path}`")
else:
# 3. 查找所有GIF文件
# 使用os.path.join确保glob路径正确
gif_files = glob.glob(os.path.join(gif_folder_path, "*.gif"))
if not gif_files:
st.warning(f"在目录 `{gif_folder_path}` 中未找到任何GIF文件。")
else:
# 4. 循环显示GIF文件
for file_path in gif_files:
try:
with open(file_path, "rb") as file_:
contents = file_.read()
data_url = base64.b64encode(contents).decode("utf-8")
# 使用st.markdown嵌入HTML img标签
st.markdown(
f'@@##@@',
unsafe_allow_html=True,
)
st.caption(f"显示文件: {os.path.basename(file_path)}")
except Exception as e:
st.error(f"加载或显示GIF文件 `{os.path.basename(file_path)}` 时发生错误: {e}")
st.write("所有GIF文件已加载完毕。")通过上述方法,我们成功地解决了在Streamlit应用中展示本地GIF集合的问题。利用Base64编码和st.markdown()的HTML渲染能力,我们能够以一种灵活且跨平台的方式集成动态图像。这种方法不仅适用于GIF,也可扩展到其他需要嵌入HTML内容的场景。遵循本教程的指导和注意事项,您可以构建出功能丰富、用户友好的Streamlit应用。


以上就是在Streamlit应用中高效展示本地GIF集合的教程的详细内容,更多请关注其它相关文章!
# html
# 实际情况
# 不存在
# 我们可以
# 两种
# 浮点
# 多个
# 本书
# 是在
# 加载
# cdn
# unix
# 工具
# 字节
# app
# 编码
# 操作系统
# windows
# markdown
# python
# win
# 全网seo推广的平台
# 工具磨床东莞网站建设
# 中山公司网站推广怎么做
# 河西区荥阳网站建设
# 抖音营销推广的目标
# 钦州短视频seo公司
# 常州营销推广投放
# 石家庄网站优化设计软件
# 营销推广未来的发展
# 汕尾seo专家
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
《爱南宁》认证电动车方法
Magento 2 产品保存事件中安全更新属性的最佳实践
红手指专业版app注册教程
键盘测试软件哪个好_键盘故障检测工具推荐
excel怎么计算平均值 excel平均函数*ERAGE使用教学
如何取消数字签名
Win10如何彻底关闭OneDrive Win10禁用云同步功能【纯净】
《爱笔思画x》涂色教程
J*aScript调试技巧_性能分析与内存快照
B站怎么快速升级 B站用户等级提升攻略【详解】
《桃源记2》资源采集攻略
电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】
夸克浏览器资源嗅探怎么用 夸克浏览器网页资源下载技巧【教程】
《知到》打卡课程方法
包子漫画官网链接官方地址 包子漫画在线观看官网首页入口
pubmed数据库官方主页_pubmed学术论文查找官网直达
谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法
酷狗音乐多音轨设置教程
《狐友》联系客服方法
Golang如何初始化module项目_Golang module init使用说明
性能与资源监视器快捷打开
外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!
Go反射进阶:访问内嵌结构体中的被遮蔽方法
在Flask应用中安全高效地更新SQLAlchemy用户数据
《大学搜题酱》官网地址登录
VS Code中的Tailwind CSS IntelliSense插件使用技巧
电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】
花生壳内网映射新方案
Chart.js 教程:自定义插件实现图表与图例间距调整
cad加载的线型看不见怎么办_cad线型不可见问题解决方法
感染了幽门螺杆菌一定会导致胃癌吗?蚂蚁庄园今日答案最新11.30
优化Asyncio嵌套函数调度:使用生产者-消费者模式实现并发流处理
《气泡星球》兑换码礼包大全
构建可配置的J*aScript加权点击计数器与共享总计功能
Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法
yandex网页版直接登录 yandex官方入口平台访问方法
ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算
微信朋友圈怎么设置三天可见 微信朋友圈设置指定天数可见步骤【教程】
win11自带录屏文件保存在哪里 Win11 Game Bar录制视频默认路径【分享】
驱动人生:游戏修复指南
《搜书吧》阅读书籍方法
mysql触发器如何编写_mysql触发器编写规范与代码示例讲解
快递物流路径揭秘
店铺如何关联视频号推广?视频号推广有什么用?
抖音评论无法发送如何修复 抖音评论功能操作指南
抖音赚钱快速入门_新手必看的抖音赚钱步骤
百度小说看书时如何翻页_百度小说手动翻页与自动翻页设置
怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】
动漫之家观看全集库 动漫之家免费资源网地址
《星露谷物语》克林特好感度事件介绍
2025-11-10
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。