当前位置: 首页 > article >正文

用python做一个压缩图片的小程序

学生正在学习图像的编码与压缩,记录一下这个python小程序,给他们提供一下帮助。需要用到PIL库,记得安装:

pip install pillow

import tkinter as tk
from tkinter import filedialog 
from PIL import Image
import tkinter.messagebox as messagebox

class ImageCompressor:
    def __init__(self, window):
        self.window = window
        self.window.title("图片压缩工具By ZYX 2023")

        self.source_path = tk.StringVar()
        self.output_path = tk.StringVar()

        frame1 = tk.Frame(window)
        frame1.pack(padx=5, pady=5)

        lbl_source = tk.Label(frame1, text="原始图片路径:")
        lbl_source.pack(side=tk.LEFT)

        entry_source = tk.Entry(frame1,textvariable=self.source_path, width=40)
        entry_source.pack(side=tk.LEFT)

        btn_source =tk.Button(frame1, text="打开", command=self.open_source_image)
        btn_source.pack(side=tk.LEFT)

        frame2 = tk.Frame(window)
        frame2.pack(padx=5, pady=5)

        lbl_output = tk.Label(frame2, text="输出图片路径:")
        lbl_output.pack(side=tk.LEFT)

        entry_output = tk.Entry(frame2,textvariable=self.output_path, width=40)
        entry_output.pack(side=tk.LEFT)

        btn_output =tk.Button(frame2, text="保存", command=self.save_output_image)
        btn_output.pack(side=tk.LEFT)

        quality_label = tk.Label(window, text='质量(1-95):')
        quality_label.pack(pady=5)

        self.quality_slider = tk.Scale(window, from_=1, to=95,
            length=400,tickinterval=19,
            orient='horizontal', resolution=1)
        self.quality_slider.set(80)
        self.quality_slider.pack()

        btn_compress =tk.Button(window, text="开始压缩", command=self.compress_image)
        btn_compress.pack(pady=10)

    def open_source_image(self):
        file_path = filedialog.askopenfilename()
        self.source_path.set(file_path)

    def save_output_image(self):
        file_path = filedialog.asksaveasfilename(defaultextension=".jpg")
        self.output_path.set(file_path)

    def compress_image(self):
        try:
            img = Image.open(self.source_path.get())
            img.save(self.output_path.get(), "JPEG", quality=self.quality_slider.get())
            messagebox.showinfo("成功", "图片压缩成功!")
        except Exception as e:
            messagebox.showerror("失败", f"压缩过程中发生错误:{e}")

if __name__ == '__main__':
    window = tk.Tk()
    app = ImageCompressor(window)
    window.mainloop()


http://www.kler.cn/a/106461.html

相关文章:

  • 每天五分钟机器学习:支持向量机算法数学基础之核函数
  • TCP(下):三次握手四次挥手 动态控制
  • 电商系统开发:Spring Boot框架实战
  • (附项目源码)nodejs开发语言,212 个性化音乐推荐系统的设计与实现,计算机毕设程序开发+文案(LW+PPT)
  • SystemVerilog学习——类的继承
  • 供应链管理、一件代发系统功能及源码分享 PHP+Mysql
  • ReentranLock超详细讲解
  • 俄罗斯黑客利用Roundcube零日漏洞窃取政府电子邮件
  • Makefile 基础教程:从零开始学习
  • Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)
  • node(三)express框架
  • Python解读市场趋势:LSTM 和 GRU 在预测 Google 股价方面的探索
  • 计算机网络之数据链路层(全)
  • 机器学习——正则化
  • python---设计模式(单例模式和工厂模式)
  • HCL模拟器选路实验案例
  • Linux系统之file命令的基本使用
  • 在3分钟内使用AI-Chat生成精美PPT(附AI工具)
  • 10个Golang 数据库最佳实践
  • Android 13.0 SystemUI状态栏屏蔽掉通知栏不显示通知
  • 【登录安全测试】
  • 【进程概念③】:进程环境变量/进程切换
  • TensorFlow2从磁盘读取图片数据集的示例(tf.data.Dataset.list_files)
  • Python学习笔记第七十二天(Matplotlib imread)
  • 广西厂家直销建筑模板,工程用木工板,多层胶合板批发
  • 使用Intersection Observer API 检测元素是否出现在可视窗口