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

Python實(shí)現(xiàn)圖片瀏覽和選擇工具

 更新時(shí)間:2025年05月19日 14:02:26   作者:winfredzhang  
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)一個(gè)圖片瀏覽和選擇工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

實(shí)現(xiàn)將截圖預(yù)覽,并按照順序加入一個(gè)pdf文件中,實(shí)現(xiàn)照片管理尤其對(duì)于喜歡看教程截圖做筆記的網(wǎng)友們。

界面展示

一、核心結(jié)構(gòu)概述

主類 ImageViewer(wx.Frame)

是主窗口類,繼承自 wx.Frame

包括左側(cè)文件瀏覽和圖片列表、右側(cè)圖片預(yù)覽區(qū)域。

支持的圖片格式:['.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff']

二、左側(cè)區(qū)域(圖片選擇與操作)

1. 打開文件夾按鈕

self.btn_open = wx.Button(self.panel, label="打開文件夾")
self.btn_open.Bind(wx.EVT_BUTTON, self.on_open_dir)

打開目錄,綁定 on_open_dir() 函數(shù)。

使用 wx.DirDialog 選擇目錄,讀取支持格式的圖片,顯示到 ListBox1。

2. 當(dāng)前路徑顯示

self.path_text = wx.StaticText(self.panel, label="當(dāng)前路徑: ")

顯示當(dāng)前選擇的圖片文件夾路徑。

3. ListBox1 — 圖片列表

self.listbox1 = wx.ListBox(...)
self.listbox1.Bind(wx.EVT_LISTBOX, self.on_select_image1)
self.listbox1.Bind(wx.EVT_LISTBOX_DCLICK, self.on_move_to_listbox2)

單擊:預(yù)覽該圖片。

雙擊:將圖片添加到 ListBox2。

4. ListBox2 — 已選圖片

self.listbox2 = wx.ListBox(...)
self.listbox2.Bind(wx.EVT_LISTBOX, self.on_select_image2)

單擊:預(yù)覽。

存放用戶選擇的用于合并 PDF 的圖片。

5. 移動(dòng)按鈕(上下移動(dòng)排序)

self.btn_up.Bind(wx.EVT_BUTTON, self.on_move_up)
self.btn_down.Bind(wx.EVT_BUTTON, self.on_move_down)

可重新排列 ListBox2 中的圖片順序(影響 PDF 順序)。

6. 合并PDF按鈕

self.btn_pdf = wx.Button(...)
self.btn_pdf.Bind(wx.EVT_BUTTON, self.on_create_pdf)

用于觸發(fā)將 ListBox2 中圖片合并生成 PDF 的邏輯(on_create_pdf() 需要你提供或補(bǔ)全)。

三、右側(cè)區(qū)域(圖片預(yù)覽)

使用 ScrolledPanel 可滾動(dòng)區(qū)域顯示圖片

self.scroll_panel = scrolled.ScrolledPanel(...)
self.img_preview = wx.StaticBitmap(...)

ScrolledPanel 允許在圖片較大時(shí)滾動(dòng)查看。

img_preview 是顯示縮略圖的主要控件。

四、主要方法詳解

1.on_open_dir():打開文件夾,調(diào)用 load_images()

2.load_images():遍歷文件夾,篩選支持的圖片擴(kuò)展名并按字母排序

3.on_select_image1() 和 on_select_image2():從 ListBox1 或 ListBox2 中選取圖片后調(diào)用 display_image() 進(jìn)行預(yù)覽

4.display_image(img_path)

使用 PIL 打開圖片,根據(jù)最大尺寸 (480x580) 縮放顯示

轉(zhuǎn)為 wx.Image -> wx.Bitmap -> 顯示在 img_preview 上

支持 RGB 和 RGBA 格式

5.on_move_to_listbox2():將 ListBox1 中雙擊的圖片名稱添加到 ListBox2,防止重復(fù)

6.on_move_up() / on_move_down():更改 ListBox2 中圖片順序,影響 PDF 合并順序

五、缺失但預(yù)期存在的方法

on_create_pdf()

該方法雖然綁定了按鈕,但代碼未貼出。預(yù)期功能:

  • 獲取 ListBox2 中圖片完整路徑;
  • 使用 reportlab 創(chuàng)建 PDF 頁(yè)面;
  • 每頁(yè)插入一張圖片(需縮放到 A4 頁(yè)面);
  • 保存到文件。
def on_create_pdf(self, event):
    output_path = os.path.join(self.current_dir, "output.pdf")
    c = canvas.Canvas(output_path, pagesize=A4)
    width, height = A4
    
    for i in range(self.listbox2.GetCount()):
        filename = self.listbox2.GetString(i)
        img_path = os.path.join(self.current_dir, filename)
        
        try:
            pil_img = Image.open(img_path)
            img_w, img_h = pil_img.size
            scale = min(width / img_w, height / img_h)
            new_w = img_w * scale
            new_h = img_h * scale
            
            c.drawImage(img_path, (width - new_w) / 2, (height - new_h) / 2, new_w, new_h)
            c.showPage()
        except Exception as e:
            wx.MessageBox(f"無法添加圖片:{filename}\n{str(e)}", "錯(cuò)誤", wx.ICON_ERROR)
    
    c.save()
    wx.MessageBox("PDF合并完成!", "成功", wx.ICON_INFORMATION)

到此這篇關(guān)于Python實(shí)現(xiàn)圖片瀏覽和選擇工具的文章就介紹到這了,更多相關(guān)Python圖片瀏覽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn)

    python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn)

    這篇文章主要介紹了python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python利用ffmpeg進(jìn)行錄制屏幕的方法

    python利用ffmpeg進(jìn)行錄制屏幕的方法

    今天小編就為大家分享一篇python利用ffmpeg進(jìn)行錄制屏幕的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python遞歸法實(shí)現(xiàn)簡(jiǎn)易連連看小游戲

    python遞歸法實(shí)現(xiàn)簡(jiǎn)易連連看小游戲

    這篇文章主要為大家詳細(xì)介紹了python遞歸法實(shí)現(xiàn)簡(jiǎn)易連連看小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • mac下pycharm設(shè)置python版本的圖文教程

    mac下pycharm設(shè)置python版本的圖文教程

    今天小編就為大家分享一篇mac下pycharm設(shè)置python版本的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python+mysql實(shí)現(xiàn)學(xué)生信息查詢系統(tǒng)

    python+mysql實(shí)現(xiàn)學(xué)生信息查詢系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python+mysql實(shí)現(xiàn)學(xué)生信息查詢系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Python處理和解析CLIXML數(shù)據(jù)的方法

    Python處理和解析CLIXML數(shù)據(jù)的方法

    在使用Windows的Windows Remote Management (WinRM)服務(wù)與PowerShell交互時(shí),經(jīng)常會(huì)遇到CLIXML(即CLI XML)格式的數(shù)據(jù),本文將介紹如何在Python中處理和解析CLIXML數(shù)據(jù),并提供一種方法來從數(shù)據(jù)中提取有效信息,需要的朋友可以參考下
    2024-04-04
  • Python使用multiprocessing模塊實(shí)現(xiàn)多進(jìn)程并發(fā)處理大數(shù)據(jù)量的示例代碼

    Python使用multiprocessing模塊實(shí)現(xiàn)多進(jìn)程并發(fā)處理大數(shù)據(jù)量的示例代碼

    這篇文章主要介紹了Python使用multiprocessing模塊實(shí)現(xiàn)多進(jìn)程并發(fā)處理大數(shù)據(jù)量的示例代碼,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 基于Numba提高python運(yùn)行效率過程解析

    基于Numba提高python運(yùn)行效率過程解析

    這篇文章主要介紹了基于Numba提高python運(yùn)行效率過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于CUDA out of memory的一種神奇解決方式

    基于CUDA out of memory的一種神奇解決方式

    這篇文章主要介紹了基于CUDA out of memory的一種神奇解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • go和python變量賦值遇到的一個(gè)問題

    go和python變量賦值遇到的一個(gè)問題

    這篇文章主要介紹了go和python變量賦值遇到的一個(gè)問題的相關(guān)資料,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

小金县| 东港市| 青阳县| 渑池县| 安新县| 屯留县| 宜兰市| 江口县| 永城市| 宿迁市| 手机| 贞丰县| 湛江市| 安陆市| 七台河市| 武城县| 调兵山市| 尼勒克县| 赞皇县| 永登县| 中方县| 冀州市| 洮南市| 纳雍县| 昔阳县| 夹江县| 呼和浩特市| 黄陵县| 通渭县| 永吉县| 丹棱县| 临夏县| 光泽县| 大竹县| 平凉市| 汉源县| 镇坪县| 岳池县| 峨眉山市| 丰顺县| 和林格尔县|