python+tkinter编写一个可批量压缩目录中所有图片为指定大小以下的窗体程序代码

代码语言:python

所属分类:其他

代码描述:python+tkinter编写一个可批量压缩目录中所有图片为指定大小以下的窗体程序代码,选择源文件夹和目标文件夹,设置图片压缩后的最大kb值,点击开始压缩按钮即可批量压缩文件中图片和子文件夹中的图片。

代码标签: python tkinter 编写 批量 压缩 目录 所有 图片 指定 大小 以下 窗体 程序 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import os
import tkinter as tk
from tkinter import filedialog, ttk
from PIL import Image

class ImageCompressorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("图片批量压缩工具")
        self.root.geometry("600x400")
        
        # 创建主框架
        main_frame = ttk.Frame(root, padding="10")
        main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
        
        # 源目录选择
        ttk.Label(main_frame, text="源文件夹:").grid(row=0, column=0, sticky=tk.W, pady=5)
        self.source_path = tk.StringVar()
        ttk.Entry(main_frame, textvariable=self.source_path, width=50).grid(row=0, column=1, padx=5)
        ttk.Button(main_frame, text="浏览", command=self.browse_source).grid(row=0, column=2)
        
        # 目标目录选择
        ttk.Label(main_frame, text="目标文件夹:").grid(row=1, column=0, sticky=tk.W, pady=5)
        self.target_path = tk.StringVar()
        ttk.Entry(main_frame, textvariable=self.target_path, width=50).grid(row=1, column=1, padx=5)
        ttk.Button(main_frame, text="浏览", command=self.browse_target).grid(row=1, column=2)
        
        # 压缩大小设置
        ttk.Label(main_frame, text="最大文件大小(KB):").grid(row=2, column=0, sticky=tk.W, pady=5)
        self.max_size = tk.StringVar(value="200")
        ttk.Entry(main_frame, textvariable=self.max_size, width=10).grid(row=2, column=1, sticky=tk.W, padx=5)
        
        # 进度条
        self.progress = ttk.Progressbar(main_frame, length=400, mode='determinate')
        self.progress.grid(row=3, column=0, columnspan=3, pady=20)
        
        # 状态标签
        self.status_var = tk.StringVar(value="准备就绪")
        ttk.Label(main_frame, textvariable=self.status_var).grid(row=4, column=0, columnspan=3)
        
        # 开始按钮
        ttk.Button(main_frame, text="开始压缩", command=self.start_compression).grid(row=5, column=0, columnspan=3, pady=20)

    def browse_source(self):
        directory = filedialog.askdirectory()
        self.source_path.set(directory)

    def browse_target(self):
        directory = filedialog.askdirectory()
        self.target_path.set(directory)

    def ensure_dir(self, directory):
        if not os.path.exists(directory):
            os.makedirs(directory)

    def compress_image_to_size(self, input_path, output_path, max_size_kb, quality_step=5):
        quality = 90
        img = Image.open(input_path)
        original_mode = img.mode
        if original_mode == 'RGBA' or original_mode == '.........完整代码请登录后点击上方下载按钮下载查看

网友评论0