图片压缩代码,并打包成exe;本地压缩,类似微信的图片压缩功能
2026/7/15 6:31:22 网站建设 项目流程

我用夸克网盘给你分享了「图片压缩代码(已打包exe)」,点击链接或复制整段内容,打开「夸克APP」即可获取。
/~96513Ybsbp~:/
链接:https://pan.quark.cn/s/df3bb7ca2300

通过网盘分享的文件:
链接: https://pan.baidu.com/s/1DEzDDG5XIIufvMF5cZtJnA?pwd=m26g 提取码: m26g 复制这段内容后打开百度网盘手机App,操作更方便哦

from PIL import Image import os import tkinter as tk from tkinter import filedialog, messagebox class ImageCompressGUI: def __init__(self, root): self.root = root self.root.title("图片压缩工具 - 自定义压缩比率") self.root.geometry("450x300") self.root.resizable(False, False) # 变量 self.img_path = tk.StringVar() self.quality = tk.StringVar(value="60") # 布局 self.create_widgets() def create_widgets(self): # 1. 选择图片区域 tk.Label(self.root, text="选择图片文件:", font=("微软雅黑", 11)).place(x=30, y=30) tk.Entry(self.root, textvariable=self.img_path, width=40, font=("微软雅黑", 10)).place(x=30, y=65) tk.Button(self.root, text="浏览选择", command=self.select_img, font=("微软雅黑", 10)).place(x=330, y=62) # 2. 压缩质量输入 tk.Label(self.root, text="压缩质量(1-100,越小压缩越强):", font=("微软雅黑", 11)).place(x=30, y=110) tk.Entry(self.root, textvariable=self.quality, width=10, font=("微软雅黑", 10)).place(x=280, y=110) # 3. 压缩按钮 tk.Button(self.root, text="开始压缩", command=self.do_compress, bg="#409EFF", fg="white", font=("微软雅黑", 12), width=15).place(x=150, y=160) # 4. 结果显示标签 self.result_label = tk.Label(self.root, text="等待操作...", font=("微软雅黑", 10), fg="#666") self.result_label.place(x=30, y=220) def select_img(self): path = filedialog.askopenfilename( title="选择要压缩的图片", filetypes=[ ("图片格式", "*.jpg;*.jpeg;*.png;*.bmp"), ("所有文件", "*.*") ] ) if path: self.img_path.set(path) def do_compress(self): img_path = self.img_path.get().strip() quality_str = self.quality.get().strip() # 校验 if not img_path or not os.path.exists(img_path): messagebox.showerror("错误", "请先选择有效的图片文件!") return try: quality = int(quality_str) if not (1 <= quality <= 100): raise ValueError except ValueError: messagebox.showerror("错误", "压缩质量必须是1-100的整数!") return try: # 构造输出路径 dir_name = os.path.dirname(img_path) base_name = os.path.basename(img_path) output_path = os.path.join(dir_name, "compressed_" + base_name) # 压缩处理 with Image.open(img_path) as img: if img.format == "PNG": img = img.convert("RGB") img.save( output_path, "JPEG", optimize=True, quality=quality ) # 计算大小和压缩率 orig_size = os.path.getsize(img_path) / 1024 comp_size = os.path.getsize(output_path) / 1024 save_rate = 100 - (comp_size / orig_size * 100) # 显示结果 res_text = (f"原图:{orig_size:.2f}KB → 压缩后:{comp_size:.2f}KB\n" f"节省空间:{save_rate:.1f}% | 已保存到同目录") self.result_label.config(text=res_text, fg="#009900") self.result_label.config(text=res_text, fg="#009900") messagebox.showinfo("完成", f"压缩成功!\n保存路径:{output_path}") except Exception as e: messagebox.showerror("压缩失败", f"异常信息:{str(e)}") self.result_label.config(text="压缩失败", fg="red") if __name__ == "__main__": root = tk.Tk() app = ImageCompressGUI(root) root.mainloop()

附录(注意把py文件换成你对应的文件名称)

🛠️ 第一步:安装打包工具

在打包之前,你需要先安装pyinstaller库。
打开命令行(CMD)或终端,输入以下命令并回车:

pip install pyinstaller

🚀 第二步:执行打包命令

假设你的 Python 脚本文件名为pdf_converter.py

推荐命令(单文件模式)

这个命令会生成一个单独的 .exe 文件,方便你复制给别人使用。

pyinstaller --onefile pdf_converter.py
进阶命令(自定义名称 + 隐藏控制台)

如果你希望生成的文件叫PDF转文本工具.exe,并且不显示黑色的命令行窗口(因为你用了 GUI 弹窗):

pyinstaller --onefile --name=PDF转文本工具 --windowed pdf_converter.py

⚠️ 注意:
如果你使用了--windowed(或-w) 参数,程序运行时不会显示黑色的控制台窗口

  • 优点:界面更清爽,像个正规软件。
  • 缺点:你的代码中print("✅ 成功...")的提示信息你看不到。如果程序出错,你也看不到报错信息,程序会直接闪退。
  • 建议:开发测试阶段先不要--windowed,等确认程序完美运行后,再打包发布版时加上它。

📂 第三步:找到生成的文件

打包完成后,命令行会显示SUCCESS。此时你的文件夹里会多出几个目录:

  • dist目录(重点):这里面就是生成的.exe文件。你把这个文件复制出来,发给任何一台电脑都能直接双击运行。
  • build目录:这是打包过程中的临时文件,打包完成后可以删除。
  • pdf_converter.spec文件:这是 PyInstaller 的配置文件,一般不需要动。

💡 常见问题与技巧

  1. 杀毒软件误报
    打包出来的.exe文件有时会被 Windows Defender 或其他杀毒软件误报为病毒。这是因为 PyInstaller 的引导加载程序特征被某些杀毒软件标记了。如果是自己写的代码,选择“允许”或添加信任即可。

  2. 文件体积较大
    即使你的代码只有几行,生成的.exe文件也可能有 30MB-50MB 左右。这是正常的,因为它把 Python 解释器和pypdf库都打包进去了,相当于带了一个迷你 Python 环境。

  3. 如果代码里有图标
    如果你想给 exe 换个图标(需要.ico格式),可以加上--icon参数:

pyinstaller --onefile --icon=my_icon.ico pdf_converter.py

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询