当前位置:首页>python>【Python办公】Python + Tkinter 打造一款批量图片格式转换神器

【Python办公】Python + Tkinter 打造一款批量图片格式转换神器

  • 2026-04-16 07:04:04
【Python办公】Python + Tkinter 打造一款批量图片格式转换神器

用 Python + Tkinter 打造一款批量图片格式转换神器

前言

在日常工作和生活中,我们经常需要将图片从一种格式转换为另一种格式。比如:

  • • 网站开发时需要将 PNG 转换为 WebP 以减小体积
  • • 某些平台只接受 JPG 格式的图片上传
  • • 批量处理设计素材时需要统一格式

如果只有一两张图片,用画图工具"另存为"就行了。但如果是几十张、上百张呢?一个个手动转换显然不现实。

今天我们就用 Python + Tkinter 来打造一款批量图片格式转换工具,支持拖拽添加文件、自定义输出路径、实时进度显示,让图片格式转换变得轻松高效!

欢迎大家关注此公众号,后台留言"python书籍"可免费获取【Python办公自动化高清PDF】电子书一本

此外小庄推荐一本适合于新手\小白入手一本 Python基础书籍,欢迎大家订阅


效果预览

工具界面采用左右分栏布局:

  • • 左侧:拖拽区域 + 文件列表,方便添加和查看待转换的图片
  • • 右侧:控制面板,包含格式选择、保存路径、进度条和转换按钮

支持的格式互转:PNG、JPG、WebP、BMP


环境准备

依赖安装

pip install Pillow

可选(支持拖拽功能):

pip install tkinterdnd2

Pillow 是 Python 最强大的图像处理库,tkinterdnd2 则为 Tkinter 添加了原生拖拽支持。


完整代码解析

1. 导入模块与整体结构

import tkinter as tkfrom tkinter import ttk, filedialog, messageboxfrom PIL import Imageimport osimport threading
模块
作用
tkinter
Python 内置 GUI 框架,负责界面搭建
ttk
Tkinter 的主题化组件库,界面更美观
filedialog
提供文件/目录选择对话框
messagebox
提供消息提示弹窗
PIL.Image
Pillow 库的核心,负责图片读取、转换、保存
os
文件路径操作
threading
多线程支持,防止转换时界面卡死

整个工具封装在 ImageConverterApp 类中,通过面向对象的方式组织代码,结构清晰。


2. 初始化与样式设置

classImageConverterApp:def__init__(self, root):self.root = rootself.root.title('图片格式转换工具')self.root.geometry('800x600')self.root.configure(bg='#f0f0f0')self.setup_styles()self.create_widgets()self.file_list = []

setup_styles() 方法统一配置了界面主题:

defsetup_styles(self):    style = ttk.Style()    style.theme_use('clam')    style.configure('Custom.TButton'                   font=('微软雅黑'10),                   padding=(105))    style.configure('Title.TLabel',                   font=('微软雅黑'16'bold'),                   background='#f0f0f0',                   foreground='#333333')    style.configure('Info.TLabel',                   font=('微软雅黑'9),                   background='#f0f0f0',                   foreground='#666666')

要点解读:

  • • 使用 clam 主题,比默认主题更现代
  • • 通过自定义样式名(如 Custom.TButtonTitle.TLabel)实现样式复用
  • • 统一使用"微软雅黑"字体,确保中文显示效果

3. 界面布局:左右分栏设计

defcreate_widgets(self):# 主标题    title_frame = tk.Frame(self.root, bg='#f0f0f0')    title_frame.pack(fill='x', padx=20, pady=(2010))# 主容器 - 左右分栏    main_frame = tk.Frame(self.root, bg='#f0f0f0')    main_frame.pack(fill='both', expand=True, padx=20, pady=10)# 左侧:拖拽区域 + 文件列表    left_frame = tk.Frame(main_frame, bg='#f0f0f0')    left_frame.pack(side='left', fill='both', expand=True, padx=(010))# 右侧:控制面板    right_frame = tk.Frame(main_frame, bg='#ffffff', relief='raised', bd=1)    right_frame.pack(side='right', fill='y', padx=(100))

布局逻辑:

┌──────────────────────────────────────────────┐│                  主标题                        │├──────────────────────┬───────────────────────┤│   拖拽区域            │   转换设置             ││                      │   目标格式: [png ▼]    ││   📂选择目录 🗑️清空   │   保存路径: [默认]     ││                      │   转换进度: ████░ 3/5  ││   待转换文件列表      │                        ││   ├ image1.png       │   [🚀 开始转换]        ││   ├ image2.jpg       │                        ││   └ image3.bmp       │                        │└──────────────────────┴───────────────────────┘

4. 拖拽区域

defcreate_drop_area(self, parent):self.drop_frame = tk.Frame(parent, bg='#e8f4fd', relief='solid', bd=2, height=120)self.drop_frame.pack(fill='x', pady=(015))self.drop_frame.pack_propagate(False)    drop_label = tk.Label(inner_frame,                          text='📁 拖拽图片文件到这里\n或点击下方按钮选择目录',                         bg='#e8f4fd', fg='#666666',                         font=('微软雅黑'11),                         justify='center')
  • • pack_propagate(False) 阻止子组件改变父容器大小,保证拖拽区域高度固定为 120px
  • • 浅蓝色背景 #e8f4fd 让拖拽区域在视觉上更突出

5. 文件列表与滚动条

defcreate_file_list(self, parent):    list_frame = tk.Frame(parent, bg='#ffffff', relief='sunken', bd=1)    list_frame.pack(fill='both', expand=True)    scrollbar = ttk.Scrollbar(list_frame)    scrollbar.pack(side='right', fill='y')self.listbox = tk.Listbox(list_frame,                              yscrollcommand=scrollbar.set,                             font=('Consolas'9),                             selectbackground='#0078d4')self.listbox.pack(fill='both', expand=True)    scrollbar.config(command=self.listbox.yview)

技巧:Listbox 和 Scrollbar 通过 yscrollcommand 和 command 双向绑定,实现同步滚动。使用等宽字体 Consolas 显示文件路径,更加整齐。


6. 控制面板:格式选择与路径设置

# 格式下拉框self.format_combobox = ttk.Combobox(format_frame,                                     textvariable=self.format_var,                                    values=['jpg''png''webp''bmp'],                                    state='readonly',                                    font=('微软雅黑'10))self.format_combobox.set('png')# 输出路径self.output_path = tk.StringVar()self.output_path.set('默认(原图片目录)')
  • • state='readonly' 防止用户手动输入非法格式
  • • 默认保存到原图片所在目录,也可以自定义输出路径
  • • 提供"重置"按钮,一键恢复默认路径

7. 拖拽功能实现

defsetup_drag_drop(self):try:from tkinterdnd2 import DND_FILES, TkinterDnDself.drop_frame.drop_target_register(DND_FILES)self.drop_frame.dnd_bind('<<Drop>>'self.drop_files)except (ImportError, AttributeError):# 优雅降级:未安装拖拽库时显示提示        drop_label = tk.Label(self.drop_frame,                              text='⚠️ 拖拽功能暂不可用',                             bg='#e8f4fd', fg='#ff6b6b')

设计亮点——优雅降级:

  • • 如果用户安装了 tkinterdnd2,拖拽功能正常启用
  • • 如果没有安装,不会报错崩溃,而是显示友好提示
  • • 用户仍然可以通过"选择目录"按钮来添加文件

拖拽事件处理函数支持文件和文件夹两种拖入方式:

defdrop_files(self, event):    files = event.data.split(' ')for f in files:        file_path = f.strip('{}')if os.path.isfile(file_path):# 单个文件:检查是否为图片格式if file_path.lower().endswith(('.png''.jpg''.jpeg''.bmp''.webp')):                new_files.append(file_path)elif os.path.isdir(file_path):# 文件夹:扫描其中的所有图片for filename in os.listdir(file_path):if filename.lower().endswith(('.png''.jpg''.jpeg''.bmp''.webp')):                    new_files.append(os.path.join(file_path, filename))

还做了去重处理,已存在的文件不会重复添加。


8. 核心功能:图片格式转换

defstart_conversion(self):    output_format = self.format_var.get()ifnot output_format ornotself.file_list:return# 在子线程中执行转换,避免界面卡死    thread = threading.Thread(target=self.convert_images, args=(output_format,))    thread.start()

为什么要用多线程?

图片转换是 I/O 密集型操作,如果在主线程中执行,GUI 会完全卡住,用户无法看到进度更新,甚至会出现"程序未响应"。使用 threading 将转换任务放到后台线程,主线程保持响应。

转换逻辑的核心:

defconvert_images(self, output_format):for i, file_path inenumerate(self.file_list):        img = Image.open(file_path)# 关键:JPG 不支持透明通道if output_format.lower() == 'jpg'and img.mode in ('RGBA''LA'):            background = Image.new('RGB', img.size, (255255255))            background.paste(img, mask=img.split()[-1])            img = background# 确定输出路径ifself.output_path.get() == '默认(原图片目录)':            output_file_path = os.path.splitext(file_path)[0] + f'.{output_format}'else:            filename = os.path.splitext(os.path.basename(file_path))[0] + f'.{output_format}'            output_file_path = os.path.join(self.output_path.get(), filename)        img.save(output_file_path)

RGBA → JPG 的处理细节:

这是一个非常容易踩的坑!PNG 和 WebP 支持透明通道(RGBA),但 JPG 不支持。如果直接将 RGBA 图片保存为 JPG,Pillow 会报错。

解决方案:创建一个白色背景的 RGB 图片,将原图粘贴上去,用白色填充透明区域。


9. 进度显示与状态反馈

# 转换过程中实时更新进度progress_value = (i + 1) / total * 100self.progress['value'] = progress_valueself.progress_label.config(text=f'{i+1}/{total}')self.root.update_idletasks()# 转换期间禁用按钮,防止重复点击self.convert_btn.config(state='disabled', text='转换中...')# 完成后恢复self.convert_btn.config(state='normal', text='🚀 开始转换')messagebox.showinfo('转换完成'f'成功转换 {success_count}/{total} 个文件')
  • • update_idletasks() 强制刷新界面,确保进度条实时更新
  • • 转换期间禁用按钮,防止用户重复点击导致冲突
  • • 完成后弹窗显示成功/失败数量

10. 程序入口:兼容两种启动方式

if __name__ == '__main__':try:from tkinterdnd2 import TkinterDnD        root = TkinterDnD.Tk()  # 支持拖拽的窗口except ImportError:        root = tk.Tk()           # 普通窗口    app = ImageConverterApp(root)    root.mainloop()

同样是优雅降级的设计:有 tkinterdnd2 就用增强版窗口,没有就用标准窗口。


技术要点总结

技术点
说明
ttk 主题化
使用 clam 主题 + 自定义样式,界面更现代
左右分栏布局pack(side='left/right')
 实现响应式布局
多线程转换threading.Thread
 防止 GUI 卡死
优雅降级
拖拽库缺失时自动退化,不影响核心功能
RGBA 兼容
PNG→JPG 时自动处理透明通道
进度反馈
进度条 + 数字双重显示,用户体验好
去重机制
拖入文件自动去重,避免重复转换
自定义输出路径
支持默认路径和自定义路径两种模式

可以继续优化的方向

  1. 1. 添加图片预览:选中文件时在旁边显示缩略图
  2. 2. 批量重命名:转换时支持自定义命名规则
  3. 3. 压缩质量设置:JPG/WebP 允许调节压缩质量(1-100)
  4. 4. 递归扫描子目录:支持扫描文件夹内的所有子目录
  5. 5. 转换日志:记录每个文件的转换结果,失败原因
  6. 6. 图片尺寸调整:转换的同时支持等比缩放

总结

这个批量图片格式转换工具虽然代码不到 400 行,但涵盖了 Tkinter GUI 开发中很多实用技巧:

  • • 样式管理:统一的视觉风格
  • • 布局技巧:灵活的 pack 布局
  • • 多线程:后台任务不阻塞 UI
  • • 异常处理:优雅降级与错误提示
  • • 用户体验:进度反馈、状态提示、防重复操作

无论你是想学习 Tkinter 开发,还是真的需要一款批量图片转换工具,这个项目都是一个很好的起点。快动手试试吧!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-16 08:56:53 HTTP/2.0 GET : https://f.mffb.com.cn/a/485813.html
  2. 运行时间 : 0.531127s [ 吞吐率:1.88req/s ] 内存消耗:5,306.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6112c9de8c16095ea5e1bbb8ea4454e8
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000920s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001408s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005857s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.006525s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001447s ]
  6. SELECT * FROM `set` [ RunTime:0.003573s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001467s ]
  8. SELECT * FROM `article` WHERE `id` = 485813 LIMIT 1 [ RunTime:0.035083s ]
  9. UPDATE `article` SET `lasttime` = 1776301013 WHERE `id` = 485813 [ RunTime:0.032430s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000766s ]
  11. SELECT * FROM `article` WHERE `id` < 485813 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001391s ]
  12. SELECT * FROM `article` WHERE `id` > 485813 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.016617s ]
  13. SELECT * FROM `article` WHERE `id` < 485813 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010156s ]
  14. SELECT * FROM `article` WHERE `id` < 485813 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.034431s ]
  15. SELECT * FROM `article` WHERE `id` < 485813 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.223309s ]
0.532819s