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


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

    pip install pillow

    1. import tkinter as tk
    2. from tkinter import filedialog
    3. from PIL import Image
    4. import tkinter.messagebox as messagebox
    5. class ImageCompressor:
    6. def __init__(self, window):
    7. self.window = window
    8. self.window.title("图片压缩工具By ZYX 2023")
    9. self.source_path = tk.StringVar()
    10. self.output_path = tk.StringVar()
    11. frame1 = tk.Frame(window)
    12. frame1.pack(padx=5, pady=5)
    13. lbl_source = tk.Label(frame1, text="原始图片路径:")
    14. lbl_source.pack(side=tk.LEFT)
    15. entry_source = tk.Entry(frame1,textvariable=self.source_path, width=40)
    16. entry_source.pack(side=tk.LEFT)
    17. btn_source =tk.Button(frame1, text="打开", command=self.open_source_image)
    18. btn_source.pack(side=tk.LEFT)
    19. frame2 = tk.Frame(window)
    20. frame2.pack(padx=5, pady=5)
    21. lbl_output = tk.Label(frame2, text="输出图片路径:")
    22. lbl_output.pack(side=tk.LEFT)
    23. entry_output = tk.Entry(frame2,textvariable=self.output_path, width=40)
    24. entry_output.pack(side=tk.LEFT)
    25. btn_output =tk.Button(frame2, text="保存", command=self.save_output_image)
    26. btn_output.pack(side=tk.LEFT)
    27. quality_label = tk.Label(window, text='质量(1-95):')
    28. quality_label.pack(pady=5)
    29. self.quality_slider = tk.Scale(window, from_=1, to=95,
    30. length=400,tickinterval=19,
    31. orient='horizontal', resolution=1)
    32. self.quality_slider.set(80)
    33. self.quality_slider.pack()
    34. btn_compress =tk.Button(window, text="开始压缩", command=self.compress_image)
    35. btn_compress.pack(pady=10)
    36. def open_source_image(self):
    37. file_path = filedialog.askopenfilename()
    38. self.source_path.set(file_path)
    39. def save_output_image(self):
    40. file_path = filedialog.asksaveasfilename(defaultextension=".jpg")
    41. self.output_path.set(file_path)
    42. def compress_image(self):
    43. try:
    44. img = Image.open(self.source_path.get())
    45. img.save(self.output_path.get(), "JPEG", quality=self.quality_slider.get())
    46. messagebox.showinfo("成功", "图片压缩成功!")
    47. except Exception as e:
    48. messagebox.showerror("失败", f"压缩过程中发生错误:{e}")
    49. if __name__ == '__main__':
    50. window = tk.Tk()
    51. app = ImageCompressor(window)
    52. window.mainloop()

  • 相关阅读:
    OneOS基于 LVGL 移植轻量化图形组件
    dolphinscheduler-数据质量-源码分析
    EFCore 的 DbFirst 模式
    出栈合法性(acm模式,中等)
    万字长文彻底搞懂二叉树
    【Leetcode】动态规划-647. 回文子串
    HTML5 新的语义化标签
    Java Apache Commons Collection3.2.1 理解Transformer 接口
    Java 并发编程面试题——Condition 接口
    Go语言excelize包-06-样式设置(样式设置、区间使用样式、行使用样式、列使用样式)
  • 原文地址:https://blog.csdn.net/hbqjzx/article/details/134050827