欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用Streamlit構(gòu)建一個簡單的照片墻應(yīng)用

 更新時間:2025年04月24日 08:49:03   作者:winfredzhang  
在現(xiàn)代 web 開發(fā)中,快速構(gòu)建交互式應(yīng)用是一項重要的技能,Streamlit 是一個強大的 Python 庫,允許開發(fā)者以最小的代碼量創(chuàng)建美觀且功能豐富的 web 應(yīng)用,今天,我們將通過分析一段簡單的 Streamlit 代碼,展示如何構(gòu)建一個照片墻應(yīng)用,需要的朋友可以參考下

代碼分析

以下是我們將要分析的代碼,這是一個基于 Streamlit 的照片墻應(yīng)用:

import streamlit as st
from PIL import Image
import os
 
# 頁面標(biāo)題
st.title("優(yōu)美的照片墻")
 
# 創(chuàng)建文件上傳控件
uploaded_files = st.file_uploader("上傳圖片文件", type=["jpg", "jpeg", "png"], accept_multiple_files=True)
 
# 顯示照片墻
if uploaded_files:
    st.subheader("照片墻展示")
    cols = st.columns(4)  # 設(shè)置列數(shù),可根據(jù)需要調(diào)整
 
    # 遍歷上傳的圖片文件
    for i, uploaded_file in enumerate(uploaded_files):
        # 使用 PIL 打開圖片
        image = Image.open(uploaded_file)
        
        # 將圖片顯示在列中
        with cols[i % 4]:  # 控制圖片排列,每行顯示4列
            st.image(image, use_column_width=True)
else:
    st.warning("請上傳圖片文件以生成照片墻!")

代碼功能分解

  1. 導(dǎo)入必要的庫

    • streamlit as st:Streamlit 庫,用于構(gòu)建交互式 web 界面。
    • PIL.Image:Python Imaging Library(Pillow),用于處理圖片文件。
    • os:雖然代碼中未直接使用 os,但導(dǎo)入它可能是為了后續(xù)可能的擴展(如文件路徑操作)。
  2. 設(shè)置頁面標(biāo)題

    • st.title("優(yōu)美的照片墻"):在頁面頂部顯示一個標(biāo)題,簡潔明了地告訴用戶這是一個照片墻應(yīng)用。
  3. 文件上傳控件

    • st.file_uploader:創(chuàng)建一個文件上傳控件,限制文件類型為常見的圖片格式(jpg、jpeg、png),并允許用戶一次上傳多個文件(accept_multiple_files=True)。
  4. 條件渲染照片墻

    • 如果用戶上傳了圖片(if uploaded_files),則顯示一個子標(biāo)題“照片墻展示”并創(chuàng)建一個包含 4 列的網(wǎng)格布局(st.columns(4))。
    • 如果沒有上傳圖片,則顯示警告信息(st.warning),提示用戶上傳圖片。
  5. 遍歷并顯示圖片

    • 使用 enumerate 遍歷上傳的文件列表,獲取索引 i 和文件對象 uploaded_file
    • 使用 PIL.Image.open 打開圖片文件。
    • 通過 i % 4 將圖片分配到 4 列中的一列,確保圖片按順序填充網(wǎng)格。
    • st.image(image, use_column_width=True):將圖片顯示在指定列中,并自動調(diào)整大小以適應(yīng)列寬。

代碼的優(yōu)點

  • 簡潔易懂:代碼結(jié)構(gòu)清晰,邏輯簡單,適合初學(xué)者學(xué)習(xí)。
  • 響應(yīng)式設(shè)計:通過 use_column_width=True,圖片會自動適應(yīng)列寬,確保在不同設(shè)備上顯示良好。
  • 用戶友好:提供明確的提示信息(如警告),提升用戶體驗。
  • 可擴展性:代碼邏輯簡單,可以輕松添加新功能,如調(diào)整列數(shù)、添加圖片濾鏡等。

代碼的改進空間

  1. 錯誤處理

    • 當(dāng)前代碼未處理上傳無效圖片文件的情況(如損壞的圖片文件)??梢蕴砑?nbsp;try-except 塊來捕獲異常并提示用戶。
    • 示例改進:
try:
    image = Image.open(uploaded_file)
    with cols[i % 4]:
        st.image(image, use_column_width=True)
except Exception as e:
    st.error(f"無法加載圖片 {uploaded_file.name}:{str(e)}")
  • 動態(tài)列數(shù)
    • 列數(shù)固定為 4,可能不適合所有場景??梢愿鶕?jù)屏幕大小或用戶輸入動態(tài)調(diào)整列數(shù)。
    • 示例改進:
num_cols = st.slider("選擇列數(shù)", min_value=1, max_value=6, value=4)
cols = st.columns(num_cols)
with cols[i % num_cols]:
    st.image(image, use_column_width=True)
  • 圖片預(yù)覽優(yōu)化
    • 可以添加圖片縮略圖或限制上傳文件大小,以提高性能。
    • 示例改進:
image = Image.open(uploaded_file).resize((200, 200))  # 調(diào)整為縮略圖
  • 樣式美化
    • Streamlit 支持自定義 CSS,可以為照片墻添加邊框、陰影或動畫效果,提升視覺吸引力。
    • 示例改進:
st.markdown("""
<style>
img {
    border-radius: 10px;
    box-shadow: 2px 2px 5px rgba(0,0,0,0.3);
}
</style>
""", unsafe_allow_html=True)

如何運行這個應(yīng)用

  • 安裝依賴
    確保已安裝 Streamlit 和 Pillow:

pip install streamlit pillow
  • 保存代碼
    將代碼保存為 app.py

  • 運行應(yīng)用
    在終端中運行以下命令:

streamlit run app.py
  • 訪問應(yīng)用
    瀏覽器會自動打開 http://localhost:8501,你就可以上傳圖片并查看照片墻了!

運行結(jié)果

以上就是Python利用Streamlit構(gòu)建一個簡單的照片墻應(yīng)用的詳細內(nèi)容,更多關(guān)于Python Streamlit照片墻的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python爬蟲程序架構(gòu)和運行流程原理解析

    Python爬蟲程序架構(gòu)和運行流程原理解析

    這篇文章主要介紹了Python爬蟲程序架構(gòu)和運行流程原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 提升Python項目整潔度使用import?linter實例探究

    提升Python項目整潔度使用import?linter實例探究

    在復(fù)雜的Python項目中,良好的代碼組織結(jié)構(gòu)是維護性和可讀性的關(guān)鍵,本文將深入研究?import-linter?工具,它是一個強大的靜態(tài)分析工具,旨在優(yōu)化項目的模塊導(dǎo)入,提高代碼質(zhì)量和可維護性
    2024-01-01
  • 對Python實現(xiàn)簡單的API接口實例講解

    對Python實現(xiàn)簡單的API接口實例講解

    今天小編就為大家分享一篇對Python實現(xiàn)簡單的API接口實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 詳解Python列表extend()函數(shù)使用方法

    詳解Python列表extend()函數(shù)使用方法

    這篇文章主要介紹了Python列表extend()函數(shù)的使用方法,文章通過代碼示例介紹的非常詳細,對我們學(xué)習(xí)或工作有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • Python實現(xiàn)標(biāo)記數(shù)組的連通域

    Python實現(xiàn)標(biāo)記數(shù)組的連通域

    這篇文章主要為大家詳細介紹了如何通過Python實現(xiàn)標(biāo)記數(shù)組的連通域,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2023-04-04
  • python中的插值 scipy-interp的實現(xiàn)代碼

    python中的插值 scipy-interp的實現(xiàn)代碼

    這篇文章主要介紹了python中的插值 scipy-interp的實現(xiàn)代碼,需要的朋友可以參考下
    2018-07-07
  • Keras loss函數(shù)剖析

    Keras loss函數(shù)剖析

    這篇文章主要介紹了Keras loss函數(shù)剖析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python生成字符視頻的實現(xiàn)示例

    Python生成字符視頻的實現(xiàn)示例

    在之前也寫過生成字符視頻的文章,但是使用的是命令行窗口輸出,效果不是很好,而且存在卡頓的情況,所以本文介紹了mp4的字符視頻,感興趣的可以了解一下
    2021-05-05
  • Python對CSV、Excel、txt、dat文件的處理

    Python對CSV、Excel、txt、dat文件的處理

    本文介紹的是Python對CSV、Excel、txt、dat文件的處理,具有一定的參考價值,需要的朋友跟隨小編一起來看下
    2018-09-09
  • Python圖形繪制操作之正弦曲線實現(xiàn)方法分析

    Python圖形繪制操作之正弦曲線實現(xiàn)方法分析

    這篇文章主要介紹了Python圖形繪制操作之正弦曲線實現(xiàn)方法,涉及Python使用numpy模塊數(shù)值運算及matplotlib.pyplot模塊進行圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12

最新評論