使用Python开发图片分割器:从入门到优化

引言

在图像处理领域,经常需要将一张大图切分成多个小图片。本文将介绍如何使用Python开发一个带图形界面的图片分割工具,并重点讨论如何处理实际应用中可能遇到的各种问题。这个工具允许用户选择图片、设置分割的行数和列数,并将分割后的图片保存到指定目录。
C:\pythoncode\new\ImageSplitter.py

全部代码

import wx
import os
import sys
import logging
from PIL import Image
from datetime import datetime

# 配置日志
logging.basicConfig(
    filename=f'image_splitter_{
     datetime.now().strftime("%Y%m%d_%H%M%S")}.log',
    level=logging.DEBUG,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

class ImageSplitterFrame(wx.Frame):
    def __init__(self):
        try:
            super().__init__(parent=None, title='图片分割工具', size=(500, 400))
            self.image_path = None
            self.save_dir = None
            self.InitUI()
            logging.info('程序启动成功')
        except Exception as e:
            logging.error(f'初始化失败: {
     str(e)}')
            wx.MessageBox(f'程序初始化失败: {
     str(e)}', '错误', wx.OK | wx.ICON_ERROR)
            self.Destroy()
        
    def InitUI(self):
        try:
            # 创建面板
            panel = wx.Panel(self)
            vbox = wx.BoxSizer(wx.VERTICAL)
            
            # 选择图片按钮
            select_btn = wx.Button(panel, label='选择图片')
            select_btn.Bind(wx.EVT_BUTTON, self.OnSelect)
            vbox.Add(select_btn, 0, wx.ALL|wx.CENTER, 5)
            
            # 显示选中的图片路径
            self.path_text = wx.TextCtrl(panel, style=wx.TE_READONLY)
            vbox.Add(self.path_text, 0, wx.ALL|wx.EXPAND, 5)
            
            # 行数和列数输入
            grid = wx.FlexGridSizer(2, 2, 5, 5)
            
            row_label = wx.StaticText(panel, label='行数:')
            self.row_input = wx.SpinCtrl(panel, value='2', min=1, max=100)
            col_label = wx.StaticText(panel, label='列数:')
            self.col_input = wx.SpinCtrl(panel, value='2', min=1, max=100)
            
            grid.AddMany([
                (row_label, 0, wx.ALIGN_CENTER_VERTICAL),
                (self.row_input, 0, wx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值