Python实现图片浏览和选择工具

Written by

in

文章目录
  • 主类 ImageViewer(wx.Frame) 是主窗口类,继承自 wx.Frame 包括左侧文件浏览和图片列表、右侧图片预览区域。 支持的图片格式:['.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff']
  • 1. 打开文件夹按钮 self.btn_open = wx.Button(self.panel, label=”打开文件夹”) self.btn_open.Bind(wx.EVT_BUTTON, self.on_open_dir) 打开目录,绑定 on_open_dir() 函数。 使用 wx.DirDialog 选择目录,读取支持格式的图片,显示到 ListBox1。 2. 当前路径显示 self.path_text = wx.StaticText(self.panel, label=”当前路径: “) 显示当前选择的图片文件夹路径。 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) 单击:预览该图片。 双击:将图片添加到 ListBox2。 4. ListBox2 — 已选图片 self.listbox2 = wx.ListBox(…) self.listbox2.Bind(wx.EVT_LISTBOX, self.on_select_image2) 单击:预览。 存放用户选择的用于合并 PDF 的图片。 5. 移动按钮(上下移动排序) 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) 用于触发将 ListBox2 中图片合并生成 PDF 的逻辑(on_create_pdf() 需要你提供或补全)。
  • 使用 ScrolledPanel 可滚动区域显示图片 self.scroll_panel = scrolled.ScrolledPanel(…) self.img_preview = wx.StaticBitmap(…) ScrolledPanel 允许在图片较大时滚动查看。 img_preview 是显示缩略图的主要控件。
  • 1.on_open_dir():打开文件夹,调用 load_images() 2.load_images():遍历文件夹,筛选支持的图片扩展名并按字母排序 3.on_select_image1() 和 on_select_image2():从 ListBox1 或 ListBox2 中选取图片后调用 display_image() 进行预览 4.display_image(img_path) 使用 PIL 打开图片,根据最大尺寸 (480×580) 缩放显示 转为 wx.Image -> wx.Bitmap -> 显示在 img_preview 上 支持 RGB 和 RGBA 格式 5.on_move_to_listbox2():将 ListBox1 中双击的图片名称添加到 ListBox2,防止重复 6.on_move_up() / on_move_down():更改 ListBox2 中图片顺序,影响 PDF 合并顺序
  • on_create_pdf() 该方法虽然绑定了按钮,但代码未贴出。预期功能: 获取 ListBox2 中图片完整路径; 使用 reportlab 创建 PDF 页面; 每页插入一张图片(需缩放到 A4 页面); 保存到文件。 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)}”, “错误”, wx.ICON_ERROR) c.save() wx.MessageBox(“PDF合并完成!”, “成功”, wx.ICON_INFORMATION) 到此这篇关于Python实现图片浏览和选择工具的文章就介绍到这了,更多相关Python图片浏览内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 使用wxpython实现的一个简单图片浏览器实例 动感网页相册 python编写简单文件夹内图片浏览工具 python 解决flask 图片在线浏览或者直接下载的问题 基于Python实现图片浏览器的应用程序 Python实现GUI图片浏览的小程序 基于Python编写一个基于插件架构的图片浏览器 浅析如何使用Python构建桌面图片浏览器
  • 目录
    • 界面展示
    • 一、核心结构概述
    • 二、左侧区域(图片选择与操作)
    • 三、右侧区域(图片预览)
    • 四、主要方法详解
    • 五、缺失但预期存在的方法

    实现将截图预览,并按照顺序加入一个pdf文件中,实现照片管理尤其对于喜欢看教程截图做笔记的网友们。

    主类 ImageViewer(wx.Frame)

    是主窗口类,继承自 wx.Frame

    包括左侧文件浏览和图片列表、右侧图片预览区域。

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

    1. 打开文件夹按钮

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

    打开目录,绑定 on_open_dir() 函数。

    使用 wx.DirDialog 选择目录,读取支持格式的图片,显示到 ListBox1。

    2. 当前路径显示

    self.path_text = wx.StaticText(self.panel, label="当前路径: ")
    

    显示当前选择的图片文件夹路径。

    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)
    

    单击:预览该图片。

    双击:将图片添加到 ListBox2。

    4. ListBox2 — 已选图片

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

    单击:预览。

    存放用户选择的用于合并 PDF 的图片。

    5. 移动按钮(上下移动排序)

    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)
    

    用于触发将 ListBox2 中图片合并生成 PDF 的逻辑(on_create_pdf() 需要你提供或补全)。

    使用 ScrolledPanel 可滚动区域显示图片

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

    ScrolledPanel 允许在图片较大时滚动查看。

    img_preview 是显示缩略图的主要控件。

    1.on_open_dir():打开文件夹,调用 load_images()

    2.load_images():遍历文件夹,筛选支持的图片扩展名并按字母排序

    3.on_select_image1() 和 on_select_image2():从 ListBox1 或 ListBox2 中选取图片后调用 display_image() 进行预览

    4.display_image(img_path)

    使用 PIL 打开图片,根据最大尺寸 (480×580) 缩放显示

    转为 wx.Image -> wx.Bitmap -> 显示在 img_preview 上

    支持 RGB 和 RGBA 格式

    5.on_move_to_listbox2():将 ListBox1 中双击的图片名称添加到 ListBox2,防止重复

    6.on_move_up() / on_move_down():更改 ListBox2 中图片顺序,影响 PDF 合并顺序

    on_create_pdf()

    该方法虽然绑定了按钮,但代码未贴出。预期功能:

    • 获取 ListBox2 中图片完整路径;
    • 使用 reportlab 创建 PDF 页面;
    • 每页插入一张图片(需缩放到 A4 页面);
    • 保存到文件。
    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)}", "错误", wx.ICON_ERROR)
        
        c.save()
        wx.MessageBox("PDF合并完成!", "成功", wx.ICON_INFORMATION)
    

    到此这篇关于Python实现图片浏览和选择工具的文章就介绍到这了,更多相关Python图片浏览内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 使用wxpython实现的一个简单图片浏览器实例
    • 动感网页相册 python编写简单文件夹内图片浏览工具
    • python 解决flask 图片在线浏览或者直接下载的问题
    • 基于Python实现图片浏览器的应用程序
    • Python实现GUI图片浏览的小程序
    • 基于Python编写一个基于插件架构的图片浏览器
    • 浅析如何使用Python构建桌面图片浏览器

    站内搜索