最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)壓縮包圖片預覽與收藏功能

 更新時間:2025年09月13日 11:44:47   作者:winfredzhang  
在日常處理圖片資料時,我們經常會遇到大量打包在壓縮文件中的照片,逐個解壓再查看不僅麻煩,而且浪費時間,下面我們來看看如何使用Python實現(xiàn)壓縮包圖片預覽與收藏功能吧

在日常處理圖片資料時,我們經常會遇到大量打包在壓縮文件中的照片。逐個解壓再查看不僅麻煩,而且浪費時間。如果能在一個小工具里直接瀏覽壓縮包中的照片,并支持將常用的壓縮文件收藏起來,豈不是非常高效?

本文將介紹一個基于 wxPython 的小工具,它可以:

  • 遍歷文件夾中的壓縮文件(zip/rar/tar 等)
  • 選擇壓縮文件后自動解壓縮并預覽其中的圖片
  • 收藏常用的壓縮文件路徑,點擊收藏即可快速加載其內容

功能設計

整個界面分為 左右兩部分

左側列表區(qū)

  • archive_listbox:壓縮文件列表
  • current_photo_listbox:當前壓縮文件中的照片列表
  • favorite_listbox:收藏的壓縮文件列表

右側預覽區(qū)

預覽選中的照片,支持縮放顯示

交互邏輯:

  • 選擇一個壓縮文件 → 自動解壓縮到臨時目錄 → 顯示所有圖片
  • 點擊 收藏 按鈕 → 將選中的壓縮文件路徑加入收藏
  • 點擊收藏列表中的項 → 自動解壓并預覽其中所有圖片

關鍵實現(xiàn)

1. 壓縮文件解壓與圖片篩選

解壓功能統(tǒng)一由 extract_archive 處理,支持 zip/rar/tar 三種常見格式。

解壓后會篩選出 .jpg/.png/.gif 等圖片文件,顯示在 current_photo_listbox 中。

def extract_archive(self, archive_path):
    """解壓縮文件并列出其中的照片"""
    # 解壓目錄
    extract_dir = os.path.join(self.temp_dir, os.path.basename(archive_path))
    if os.path.exists(extract_dir):
        shutil.rmtree(extract_dir)
    os.makedirs(extract_dir)

    # 根據格式解壓
    if archive_path.endswith(".zip"):
        with zipfile.ZipFile(archive_path, 'r') as zip_ref:
            zip_ref.extractall(extract_dir)
    elif archive_path.endswith(".rar"):
        with rarfile.RarFile(archive_path, 'r') as rar_ref:
            rar_ref.extractall(extract_dir)
    elif archive_path.endswith(".tar") or archive_path.endswith(".gz"):
        with tarfile.open(archive_path, 'r:*') as tar_ref:
            tar_ref.extractall(extract_dir)
    else:
        wx.CallAfter(self.status_text.SetLabel, "不支持的壓縮格式")
        return

    # 列出照片
    photos = []
    for root, _, files in os.walk(extract_dir):
        for file in files:
            if file.lower().endswith((".png", ".jpg", ".jpeg", ".bmp", ".gif")):
                photos.append(os.path.join(root, file))

    wx.CallAfter(self.update_photo_list, photos)

2. 收藏功能

收藏按鈕的邏輯是:獲取當前 archive_listbox 選中的壓縮文件路徑,存儲到 favorite_listbox 中。

def on_favorite(self, event):
    """收藏按鈕事件"""
    selection = self.archive_listbox.GetSelection()
    if selection == wx.NOT_FOUND:
        wx.MessageBox("請先選擇一個壓縮文件", "提示", wx.OK | wx.ICON_INFORMATION)
        return

    archive_path = self.archive_listbox.GetClientData(selection)

    # 避免重復收藏
    for i in range(self.favorite_listbox.GetCount()):
        if self.favorite_listbox.GetClientData(i) == archive_path:
            wx.MessageBox("該壓縮文件已經在收藏列表中", "提示", wx.OK | wx.ICON_INFORMATION)
            return

    display_text = os.path.basename(archive_path)
    self.favorite_listbox.Append(display_text, archive_path)
    self.status_text.SetLabel(f"已收藏: {display_text}")

3. 點擊收藏項加載圖片

收藏列表保存的是 壓縮文件路徑,當用戶點擊某個收藏項時,直接調用 extract_archive 來解壓和加載照片。

def on_favorite_select(self, event):
    """收藏列表選擇事件"""
    selection = self.favorite_listbox.GetSelection()
    if selection == wx.NOT_FOUND:
        return

    archive_path = self.favorite_listbox.GetClientData(selection)
    if not os.path.exists(archive_path):
        self.status_text.SetLabel(f"文件不存在: {archive_path}")
        wx.MessageBox(f"文件不存在: {archive_path}", "錯誤", wx.OK | wx.ICON_ERROR)
        return

    self.status_text.SetLabel(f"正在解壓收藏文件: {os.path.basename(archive_path)}...")

    thread = threading.Thread(target=self.extract_archive, args=(archive_path,))
    thread.daemon = True
    thread.start()

這樣用戶只需點擊收藏,就能快速打開常用的壓縮包,無需再去文件夾里查找。

4. 圖片預覽

current_photo_listbox 選擇某個圖片時,右側的 preview_panel 會用 wxPython 的 wx.StaticBitmap 顯示縮略圖:

def show_image(self, image_path):
    """顯示圖片"""
    image = wx.Image(image_path, wx.BITMAP_TYPE_ANY)
    W, H = self.preview_panel.GetClientSize()
    image = image.Scale(W, H, wx.IMAGE_QUALITY_HIGH)
    self.preview_bitmap.SetBitmap(wx.Bitmap(image))
    self.preview_panel.Refresh()

運行效果

  • 左側加載文件夾,自動掃描壓縮文件
  • 點擊某個壓縮文件 → 解壓縮并顯示照片
  • 點擊 收藏 → 壓縮文件加入收藏列表
  • 點擊收藏項 → 自動解壓并顯示照片

整個操作流程非常直觀,特別適合整理和瀏覽打包好的圖片資源。

運行結果

到此這篇關于python實現(xiàn)壓縮包圖片預覽與收藏功能的文章就介紹到這了,更多相關python圖片預覽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python與Java互操作的五種主流方式

    Python與Java互操作的五種主流方式

    在企業(yè)級應用開發(fā)中,Python 和 Java 常常需要協(xié)同工作——Python 擅長數據科學和快速原型開發(fā),Java 則在大型系統(tǒng)和高性能后端方面表現(xiàn)優(yōu)異,本指南將全面介紹 Python 與 Java 互操作的 5 種主流方式,需要的朋友可以參考下
    2025-11-11
  • Python人工智能實戰(zhàn)之對話機器人的實現(xiàn)

    Python人工智能實戰(zhàn)之對話機器人的實現(xiàn)

    本文將通過Python開發(fā)一個可以講笑話的機器人,可以自由定制功能,想講幾個笑話就講幾個笑話。文中的示例代碼講解詳細,感興趣的可以動手試一試
    2022-02-02
  • Python入門教程(二十四)Python的迭代器

    Python入門教程(二十四)Python的迭代器

    這篇文章主要介紹了Python入門教程(二十四)Python的迭代器,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • Python使用修飾器進行異常日志記錄操作示例

    Python使用修飾器進行異常日志記錄操作示例

    這篇文章主要介紹了Python使用修飾器進行異常日志記錄操作,結合實例形式分析了Python基于修飾器的log日志文件操作的相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • Python實現(xiàn)繪制多角星實例

    Python實現(xiàn)繪制多角星實例

    這篇文章要給大家分享Python實現(xiàn)繪制多角星的實例,在具備一定的Python編程基礎以后,我們可以結合for循環(huán)進行多角星的編寫,只要簡單的幾次循環(huán),即可以極大的解決重復編寫相同代碼方面的問題,下面小編將以三角星,五角星為例,進而引入如何繪制多角星,需要的朋友可以參考一下
    2021-11-11
  • pygame實現(xiàn)滑塊接小球游戲

    pygame實現(xiàn)滑塊接小球游戲

    這篇文章主要為大家詳細介紹了pygame實現(xiàn)滑塊接小球游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Python 異步之如何保護任務免于取消詳解

    Python 異步之如何保護任務免于取消詳解

    這篇文章主要為大家介紹了Python 異步之如何保護任務免于取消示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 深度定制Python的Flask框架開發(fā)環(huán)境的一些技巧總結

    深度定制Python的Flask框架開發(fā)環(huán)境的一些技巧總結

    現(xiàn)在越來越多的人使用virtualenv虛擬環(huán)境部署Python項目,包括針對框架的實例文件夾與版本控制布置,這里我們就來整理關于深度定制Python的Flask框架開發(fā)環(huán)境的一些技巧總結
    2016-07-07
  • 詳解Python遍歷列表時刪除元素的正確做法

    詳解Python遍歷列表時刪除元素的正確做法

    這篇文章主要介紹了詳解Python遍歷列表時刪除元素的正確做法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Python使用Flask后端實現(xiàn)解析Excel圖表(附源碼)

    Python使用Flask后端實現(xiàn)解析Excel圖表(附源碼)

    這篇文章主要介紹了一個完整的 Flask + Vue 3 前端模板 方案,實現(xiàn) 上傳 Excel 文件(不再用鏈接),后端解析 chart1.xml,返回結構化數據,前端用 ECharts 渲染圖表,感興趣的小伙伴可以了解下
    2026-01-01

最新評論

巴南区| 康马县| 枣强县| 茂名市| 南郑县| 莱芜市| 德化县| 双柏县| 吉水县| 南木林县| 拉孜县| 武义县| 马边| 台州市| 惠水县| 靖边县| 稷山县| 西乌珠穆沁旗| 黎平县| 漾濞| 新野县| 宁津县| 禹州市| 新野县| 西乌| 温宿县| 措美县| 夏邑县| 寿宁县| 思茅市| 萝北县| 宽甸| 都昌县| 临西县| 南丹县| 阿拉善右旗| 丹巴县| 陈巴尔虎旗| 大姚县| 乃东县| 宜兰县|