『玩转Streamlit』--图像与媒体组件

Streamlit中的图像与媒体组件,主要是st.image、st.audio和st.video。

它们是专为在Streamlit Web应用程序中嵌入和展示多媒体内容而设计的,这些组件不仅丰富了应用程序的呈现形式,还极大地提升了用户体验和互动性。

1. st.image

st.image函数用于在Streamlit应用程序中展示图像内容,增强视觉呈现效果。

比如,在数据可视化的场景中,通过st.image展示数据分析结果,如柱状图、折线图等;

在项目展示时,也可以通过在项目中嵌入产品图片、示意图等,提升用户理解。

它的主要参数有:

名称 类型 说明
image numpy.ndarray / numpy.ndarray / BytesIO / str / str 要显示的图像,也可以指定一个图像URL或URL列表
caption str/str 图像标题,如果显示多幅图像,应当是字符串列表
width int / None 图像宽度,None表示使用图像自身宽度
clamp bool 是否将图像的像素值压缩到有效域(0~255),仅对字节数组图像有效
channels "RGB" / "BGR" 图像通道类型
output_format "JPEG" / "PNG" / "auto" 图像格式
use_container_width bool 如果设置为True,则使用列宽作为图像宽度

1.1. 使用示例

展示本地图像文件,通过image参数接受PIL图像对象,caption参数为图像添加标题,

width参数设置了图像的显示宽度。

python 复制代码
import streamlit as st
from PIL import Image

# 读取本地图像文件
image = Image.open("path/to/your/image.jpg")

# 使用st.image展示图像,并设置标题和宽度
st.image(image, caption="这是一张本地图片", width=300)

展示URL图像,并使用use_column_width参数使图像宽度自适应Streamlit列的宽度。

python 复制代码
# 图像URL
image_url = "http://xxx.com/xxx.jpeg"

# 使用st.image展示URL图像,并设置使用列宽
st.image(
    image_url,
    use_column_width=True,
    caption="这是一张网络图片",
)

图片的宽度会随着浏览器窗口的大小自适应变化。

2. st.audio

st.audio函数用于在Streamlit应用程序中嵌入音频内容,为数据分析结果添加声音效果,增强表现力。

它的主要参数有:

名称 类型 说明
data str / bytes / BytesIO / numpy.ndarray / file 要播放的音频数据,可以是字节码流、numpy.ndarray或打开的文件
format str 音频文件的MIME类型,如'audio/ogg'、'audio/mp3'等
start_time int / float / timedelta / str / None 指定音频播放的起始时间
sample_rate int / None 音频的采样率,播放音频时,通常不需要直接设置这个参数
end_time int / float / timedelta / str / None 指定音频播放的结束时间
loop bool 是否循环播放音频
autoplay bool 是否自动播放音频

2.1. 使用示例

播放本地音频文件,autoplay参数设置为True,使音频自动播放。

python 复制代码
import streamlit as st

# 打开本地音频文件
audio_file = open("path/to/your/audio.mp3", "rb")
audio_bytes = audio_file.read()

# 使用st.audio播放音频,并自动播放
st.audio(
    audio_bytes,
    format="audio/mp3",
    autoplay=True,
)

运行之后会自动播放。

和st.image一样,音频也可以传入URL,直接播放在线的音频。

3. st.video

st.video函数用于在Streamlit应用程序中嵌入视频内容,通过视频展示分析结果的特点或分析过程。

它的主要参数有:

名称 类型 说明
data str / bytes / BytesIO / numpy.ndarray / file 要播放的视频数据,可以是URL字符串、字节码流、numpy.ndarray或打开的文件
format str 视频文件的MIME类型,如'video/mp4',默认值为'video/mp4'
start_time int / float / timedelta / str / None 视频开始播放的时间
subtitles str / bytes / Path / io.BytesIO / dict 视频字幕数据
end_time int / float / timedelta / str / None 视频结束播放的时间
loop bool 是否循环播放视频
autoplay bool 是否自动播放视频
muted bool 是否静音播放

3.1. 使用示例

播放本地视频文件, 通过start_time和end_time参数设置了视频播放开始和结束的时间(秒)。

python 复制代码
import streamlit as st

# 打开本地视频文件
video_file = open('path/to/your/video.mp4', 'rb')
video_bytes = video_file.read()

# 使用st.video播放视频,并设置标题和开始时间
st.video(
    video_bytes,
    format="video/mp4",
    start_time=5,
    end_time=10,
)

运行之后,视频加载后停在5s的位置,点击播放,播放到10s时自动停止。

4. 总结

总之,st.image、st.audio和st.video这三个组件共同构成了Streamlit中强大的多媒体展示工具集。

它们各自专注于图像、音频和视频的展示与播放,通过丰富的参数设置和灵活的嵌入方式,为开发者提供了极大的便利和创意空间。

无论是构建数据可视化应用、产品展示页面还是在线教育平台,这些组件都能帮助开发者轻松实现多媒体内容的嵌入与呈现。

相关推荐
海绵宝宝转agent6 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭6 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
每天都要写算法(努力版)6 小时前
【行业前沿报告】DAgger:让智能体在自己走到的状态上学习
人工智能·学习·机器学习
小小龙学IT6 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
2601_962071577 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
FL16238631297 小时前
智慧医疗X光图像小儿手腕外伤检测数据集VOC+YOLO格式2538张9类别
人工智能·yolo·机器学习
卷无止境8 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路8 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师8 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏
计算机毕业编程指导师8 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的白鹿抖音评论大数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·抖音评论