亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

功能設(shè)計(jì)

整個(gè)界面分為 左右兩部分

左側(cè)列表區(qū)

  • archive_listbox:壓縮文件列表
  • current_photo_listbox:當(dāng)前壓縮文件中的照片列表
  • favorite_listbox:收藏的壓縮文件列表

右側(cè)預(yù)覽區(qū)

預(yù)覽選中的照片,支持縮放顯示

交互邏輯:

  • 選擇一個(gè)壓縮文件 → 自動(dòng)解壓縮到臨時(shí)目錄 → 顯示所有圖片
  • 點(diǎn)擊 收藏 按鈕 → 將選中的壓縮文件路徑加入收藏
  • 點(diǎn)擊收藏列表中的項(xiàng) → 自動(dòng)解壓并預(yù)覽其中所有圖片

關(guān)鍵實(shí)現(xiàn)

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

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

解壓后會(huì)篩選出 .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)

    # 根據(jù)格式解壓
    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. 收藏功能

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

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

    archive_path = self.archive_listbox.GetClientData(selection)

    # 避免重復(fù)收藏
    for i in range(self.favorite_listbox.GetCount()):
        if self.favorite_listbox.GetClientData(i) == archive_path:
            wx.MessageBox("該壓縮文件已經(jīng)在收藏列表中", "提示", 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. 點(diǎn)擊收藏項(xiàng)加載圖片

收藏列表保存的是 壓縮文件路徑,當(dāng)用戶(hù)點(diǎn)擊某個(gè)收藏項(xiàng)時(shí),直接調(diào)用 extract_archive 來(lái)解壓和加載照片。

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}", "錯(cuò)誤", 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()

這樣用戶(hù)只需點(diǎn)擊收藏,就能快速打開(kāi)常用的壓縮包,無(wú)需再去文件夾里查找。

4. 圖片預(yù)覽

current_photo_listbox 選擇某個(gè)圖片時(shí),右側(cè)的 preview_panel 會(huì)用 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()

運(yùn)行效果

  • 左側(cè)加載文件夾,自動(dòng)掃描壓縮文件
  • 點(diǎn)擊某個(gè)壓縮文件 → 解壓縮并顯示照片
  • 點(diǎn)擊 收藏 → 壓縮文件加入收藏列表
  • 點(diǎn)擊收藏項(xiàng) → 自動(dòng)解壓并顯示照片

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

運(yùn)行結(jié)果

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

相關(guān)文章

  • Matplotlib實(shí)現(xiàn)各種條形圖繪制

    Matplotlib實(shí)現(xiàn)各種條形圖繪制

    這篇文章主要介紹了Matplotlib實(shí)現(xiàn)各種條形圖繪制,文章通過(guò)利用 plt.bar 方法實(shí)現(xiàn)各種條形圖繪制,內(nèi)容詳細(xì)具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • 詳解python路徑拼接os.path.join()函數(shù)的用法

    詳解python路徑拼接os.path.join()函數(shù)的用法

    os.path.join()函數(shù):連接兩個(gè)或更多的路徑名組件。這篇文章主要介紹了python路徑拼接os.path.join()函數(shù)的用法,需要的朋友可以參考下
    2019-10-10
  • Python文件的操作示例的詳細(xì)講解

    Python文件的操作示例的詳細(xì)講解

    本問(wèn)重點(diǎn)講解了Python文件的讀寫(xiě)原理、常用文件打開(kāi)模式、文件對(duì)象的常用方法和目錄的相關(guān)操作詳細(xì)講解,對(duì)Python文件操作相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • Python計(jì)算回文數(shù)的方法

    Python計(jì)算回文數(shù)的方法

    這篇文章主要介紹了Python計(jì)算回文數(shù)的方法,實(shí)例分析了Python操作字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Python 操作 ElasticSearch的完整代碼

    Python 操作 ElasticSearch的完整代碼

    python提供了操作ElasticSearch 接口,因此要用python來(lái)操作ElasticSearch,這篇文章主要介紹了Python 操作 ElasticSearch,需要的朋友可以參考下
    2019-08-08
  • python中實(shí)現(xiàn)php的var_dump函數(shù)功能

    python中實(shí)現(xiàn)php的var_dump函數(shù)功能

    這篇文章主要介紹了python中實(shí)現(xiàn)php的var_dump函數(shù)功能,var_dump函數(shù)在PHP中調(diào)試時(shí)非常實(shí)用,本文介紹在Python中實(shí)現(xiàn)這個(gè)函數(shù),需要的朋友可以參考下
    2015-01-01
  • 腳本測(cè)試postman快速導(dǎo)出python接口測(cè)試過(guò)程示例

    腳本測(cè)試postman快速導(dǎo)出python接口測(cè)試過(guò)程示例

    這篇文章主要介紹了關(guān)于腳本測(cè)試postman快速導(dǎo)出python接口測(cè)試示例的過(guò)程操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • Python中修改字符串的四種方法

    Python中修改字符串的四種方法

    在Python中,字符串是不可變類(lèi)型,即無(wú)法直接修改字符串的某一位字符。這篇文章主要介紹了Python中修改字符串的四種方法,需要的朋友可以參考下
    2018-11-11
  • 深度解析Python中遞歸下降解析器的原理與實(shí)現(xiàn)

    深度解析Python中遞歸下降解析器的原理與實(shí)現(xiàn)

    在編譯器設(shè)計(jì)、配置文件處理和數(shù)據(jù)轉(zhuǎn)換領(lǐng)域,遞歸下降解析器是最常用且最直觀(guān)的解析技術(shù),本文將詳細(xì)介紹遞歸下降解析器的原理與實(shí)現(xiàn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-08-08
  • python人人網(wǎng)登錄應(yīng)用實(shí)例

    python人人網(wǎng)登錄應(yīng)用實(shí)例

    這篇文章主要介紹了python人人網(wǎng)登錄應(yīng)用實(shí)例,是一個(gè)非常實(shí)用的技巧,需要的朋友可以參考下
    2014-09-09

最新評(píng)論