API文档
本文档详细介绍图像分割工具的API接口,包括类方法、函数参数和返回值。
🏗️ 核心类
ImageSplitterApp
主要的应用程序类,负责整个GUI界面和业务逻辑。
构造函数
def __init__(self, root)参数:
root(tk.Tk): 主窗口对象
功能:
- 初始化应用程序
- 设置窗口标题和尺寸
- 创建必要的文件夹
- 创建GUI组件
- 绑定事件处理器
主要方法
create_widgets()
def create_widgets(self)功能:创建主界面组件 返回值:None
实现细节:
- 创建主容器
- 创建标题区域
- 创建标签页控件
- 创建状态栏
create_main_tab()
def create_main_tab(self)功能:创建主要功能标签页 返回值:None
实现细节:
- 设置三栏布局
- 创建文件选择区域
- 创建参数设置区域
- 创建操作按钮区域
create_settings_tab()
def create_settings_tab(self)功能:创建设置标签页 返回值:None
实现细节:
- 创建输出设置区域
- 创建高级设置区域
- 绑定控件事件
split_images()
def split_images(self, cols, rows, mode)参数:
cols(int): 列数rows(int): 行数mode(str): 保存模式 ('separate_folders' 或 'date_folders')
功能:批量分割图像 返回值:None
实现细节:
- 在独立线程中执行
- 复制文件到上传文件夹
- 调用单张图片分割方法
- 更新进度和状态
- 完成后询问是否合并PDF
split_image_into_tiles()
def split_image_into_tiles(self, image_path, cols, rows, mode='separate_folders', output_folder=None)参数:
image_path(str): 图像文件路径cols(int): 列数rows(int): 行数mode(str): 保存模式output_folder(str, optional): 输出文件夹路径
返回值:
list[str]: 生成的图块文件路径列表
实现细节:
- 打开图像并计算图块尺寸
- 根据模式创建输出文件夹
- 按网格裁剪图像
- 保存图块并返回路径列表
merge_to_pdf()
def merge_to_pdf(self, specific_images=None)参数:
specific_images(list, optional): 指定的图像列表
功能:将图像合并为PDF 返回值:None
实现细节:
- 收集图像文件
- 在独立线程中执行PDF合并
- 按文件名排序
- 创建PDF并保存
show_demo()
def show_demo(self)功能:显示分割线演示 返回值:None
实现细节:
- 创建演示窗口
- 绘制500×500像素画布
- 显示红色分割线和网格编号
📁 文件管理API
文件选择
select_files()
def select_files(self)功能:打开文件选择对话框 返回值:None
实现细节:
- 支持多种图像格式
- 避免重复选择
- 更新文件信息显示
clear_files()
def clear_files(self)功能:清空文件列表 返回值:None
update_file_info()
def update_file_info(self)功能:更新文件信息显示 返回值:None
实现细节:
- 计算文件数量和总大小
- 格式化大小显示
- 更新文件树控件
- 更新统计信息
update_file_tree()
def update_file_tree(self)功能:更新文件树显示 返回值:None
实现细节:
- 清空现有项目
- 添加文件信息(序号、文件名、大小、类型)
文件验证
validate_image_file()
def validate_image_file(self, file_path)参数:
file_path(str): 文件路径
返回值:
bool: 验证结果
功能:验证图像文件格式和大小
支持的格式:
- JPG/JPEG
- PNG
- BMP
- GIF
- TIFF
⚙️ 参数控制API
预设管理
apply_preset()
def apply_preset(self, cols, rows)参数:
cols(int): 列数rows(int): 行数
功能:应用快速预设 返回值:None
可用预设:
- 2×2
- 3×3
- 4×4
- 2×3
- 3×2
统计信息
update_stats()
def update_stats(self)功能:更新统计信息 返回值:None
计算内容:
- 预计生成图块数量
- 输出位置信息
📊 状态管理API
状态更新
update_status()
def update_status(self, message, progress=None)参数:
message(str): 状态消息progress(float, optional): 进度值 (0-100)
功能:更新状态显示 返回值:None
进度控制
set_progress()
def set_progress(self, value)参数:
value(float): 进度值 (0-100)
功能:设置进度条 返回值:None
reset_progress()
def reset_progress(self)功能:重置进度条 返回值:None
🎨 UI组件API
界面创建
create_header()
def create_header(self, parent)参数:
parent(tk.Widget): 父容器
功能:创建标题区域 返回值:None
create_file_section()
def create_file_section(self, parent)参数:
parent(tk.Widget): 父容器
功能:创建文件选择区域 返回值:None
组件:
- 文件信息标签
- 文件树控件
- 选择和清空按钮
create_params_section()
def create_params_section(self, parent)参数:
parent(tk.Widget): 父容器
功能:创建参数设置区域 返回值:None
组件:
- 分割尺寸设置
- 快速预设按钮
- 保存模式选择
create_actions_section()
def create_actions_section(self, parent)参数:
parent(tk.Widget): 父容器
功能:创建操作按钮区域 返回值:None
组件:
- 主要操作按钮
- 辅助功能按钮
- 统计信息显示
create_settings_tab()
def create_settings_tab(self)功能:创建设置标签页 返回值:None
设置项:
- 输出格式选择
- 图片质量控制
- 高级选项
create_status_bar()
def create_status_bar(self, parent)参数:
parent(tk.Widget): 父容器
功能:创建状态栏 返回值:None
组件:
- 状态文本标签
- 进度条
🔄 事件处理API
窗口事件
on_closing()
def on_closing(self)功能:窗口关闭事件处理 返回值:None
实现细节:
- 显示确认对话框
- 销毁窗口
控件事件
on_parameter_change()
def on_parameter_change(self, *args)参数:
*args: 事件参数
功能:参数变化事件处理 返回值:None
on_quality_change()
def on_quality_change(self, value)参数:
value(str): 质量值
功能:质量滑块变化事件 返回值:None
📤 输出管理API
文件夹操作
open_output_folder()
def open_output_folder(self)功能:打开输出文件夹 返回值:None
实现细节:
- 跨平台兼容
- 使用系统默认程序打开
PDF操作
_ask_merge_after_split()
def _ask_merge_after_split(self, total_files)参数:
total_files(int): 处理的文件数量
功能:分割完成后询问是否合并PDF 返回值:None
_ask_open_pdf()
def _ask_open_pdf(self, pdf_path)参数:
pdf_path(str): PDF文件路径
功能:询问是否打开PDF文件 返回值:None
_merge_images_to_pdf()
def _merge_images_to_pdf(self, image_files)参数:
image_files(list): 图像文件路径列表
功能:实际执行PDF合并 返回值:None
实现细节:
- 使用reportlab创建PDF页面
- 使用pypdf合并PDF文件
- 支持多种图像格式
🔧 配置API
参数获取
get_columns()
def get_columns(self)返回值:
int: 当前列数设置
get_rows()
def get_rows(self)返回值:
int: 当前行数设置
get_save_mode()
def get_save_mode(self)返回值:
str: 当前保存模式
get_output_format()
def get_output_format(self)返回值:
str: 当前输出格式
get_quality()
def get_quality(self)返回值:
int: 当前质量设置
参数设置
set_columns()
def set_columns(self, cols)参数:
cols(int): 列数
set_rows()
def set_rows(self, rows)参数:
rows(int): 行数
set_save_mode()
def set_save_mode(self, mode)参数:
mode(str): 保存模式
📝 工具函数
文件操作
get_file_size()
def get_file_size(self, file_path)参数:
file_path(str): 文件路径
返回值:
int: 文件大小(字节)
format_file_size()
def format_file_size(self, size_bytes)参数:
size_bytes(int): 字节数
返回值:
str: 格式化的大小字符串
图像操作
calculate_tile_size()
def calculate_tile_size(self, image_size, cols, rows)参数:
image_size(tuple): 图像尺寸 (width, height)cols(int): 列数rows(int): 行数
返回值:
tuple: 图块尺寸 (width, height)
get_image_info()
def get_image_info(self, image_path)参数:
image_path(str): 图像路径
返回值:
dict: 图像信息字典
包含信息:
- 尺寸
- 格式
- 模式
- 文件大小
🚨 错误处理
异常类型
class ImageSplitterError(Exception):
"""基础异常类"""
pass
class FileError(ImageSplitterError):
"""文件相关错误"""
pass
class ProcessingError(ImageSplitterError):
"""处理相关错误"""
pass
class ValidationError(ImageSplitterError):
"""验证相关错误"""
pass错误处理方法
handle_error()
def handle_error(self, error)参数:
error(Exception): 异常对象
功能:统一错误处理 返回值:
dict: 错误处理结果
show_error()
def show_error(self, title, message)参数:
title(str): 错误标题message(str): 错误消息
功能:显示错误对话框 返回值:None
📊 示例代码
基本使用
import tkinter as tk
import ttkbootstrap as ttk
from image_splitter import ImageSplitterApp
# 创建主窗口
root = ttk.Window(themename="litera")
# 创建应用程序
app = ImageSplitterApp(root)
# 启动主循环
root.mainloop()API调用示例
# 获取当前参数
cols = app.get_columns()
rows = app.get_rows()
mode = app.get_save_mode()
# 设置参数
app.set_columns(3)
app.set_rows(3)
app.set_save_mode('separate_folders')
# 选择文件
app.select_files()
# 开始分割
app.start_split()
# 显示演示
app.show_demo()自定义扩展
class CustomImageSplitterApp(ImageSplitterApp):
def __init__(self, root):
super().__init__(root)
# 自定义初始化
def custom_processing(self):
# 自定义处理逻辑
pass
def extend_ui(self):
# 扩展UI组件
pass这个API文档提供了完整的接口说明,帮助开发者理解和使用图像分割工具的各项功能。