图像压缩神器:使用wxPython和Pillow快速压缩JPEG文件

导语:
在数字时代,我们经常处理大量的图像文件,无论是个人照片、网络图片还是工作中的设计素材。然而,随着图像数量的增多,存储和传输这些文件可能会成为一个挑战。幸运的是,我们可以利用Python编程和两个强大的库——wxPython和Pillow,轻松地实现图像压缩的自动化过程。本文将介绍如何使用wxPython选择文件夹路径,并使用Pillow压缩JPEG文件,让你的图像占用更少的空间,同时保持良好的视觉质量。


正文:

引言

在当今数字化时代,我们每天都会处理大量的图像文件。无论是从手机相机中导出的个人照片,还是从互联网上下载的壁纸和图片资源,图像文件占据了我们电脑存储空间的很大一部分。为了更好地管理和共享这些图像,压缩它们是一个非常实用的方法。然而,手动逐个压缩图像文件费时费力,这时候我们可以借助Python编程来实现自动化的图像压缩过程。
C:\pythoncode\new\compressjpg.py

准备工作

在开始之前,我们需要确保已经安装了以下两个库:wxPython和Pillow。如果你还没有安装它们,可以使用以下命令进行安装:

pip install wxPython
pip install Pillow

创建GUI界面

我们将使用wxPython库来创建一个简单的GUI界面,它将帮助我们选择要压缩的文件夹路径。下面是代码片段:

# 代码片段1
import os
import wx
from PIL import Image

class ImageCompressor(wx.Frame):
    def __init__(self, parent, title):
        super(ImageCompressor, self).__init__(parent, title=title, size=(400, 200))

        self.panel = wx.Panel(self)
        self.create_widgets()
        self.Show()

    def create_widgets(self):
        vbox = wx.BoxSizer(wx.VERTICAL)

        open_button = wx.Button(self.panel, label="选择文件夹")
        open_button.Bind(wx.EVT_BUTTON, self.on_open_button)
        vbox.Add(open_button, proportion=1, flag=wx.EXPAND|wx.ALL, border=10)

        self.panel.SetSizer(vbox)

    def on_open_button(self, event):
        dialog = wx.DirDialog(self, "选择文件夹路径", style=wx.DD_DEFAULT_STYLE)

        if dialog.ShowModal() == wx.ID_OK:
            folder_path = dialog.GetPath()
            self.compress_images(folder_path)

        dialog.Destroy()

    def compress_images(self, folder_path):
        processed_folder = os.path.join(folder_path, "processed")
        os.makedirs(processed_folder, exist_ok=True)

        for filename in os.listdir(folder_path):
            if filename.lower().endswith(".jpg"):
                image_path = os.path.join(folder_path, filename)
                processed_path = os.path.join(processed_folder, filename)

                with Image.open(image_path) as image:
                    image.save(processed_path, optimize=True, quality=50)

        wx.MessageBox("图像压缩完成!", "完成", wx.OK | wx.ICON_INFORMATION)


if __name__ == "__main__":
    app = wx.App()
    ImageCompressor(None, title="图像压缩")
    app.MainLoop()

图像压缩过程

在我们的代码中,我们使用了Pillow库来打开JPEG图像文件并进行压缩。下面是代码片段:

# 代码片段2
from PIL import Image

# ...

def compress_images(self, folder_path):
    processed_folder = os.path.join(folder_path, "processed")
    os.makedirs(processed_folder, exist_ok=True)

    for filename in os.listdir(folder_path):
        if filename.lower().endswith(".jpeg"):
            image_path = os.path.join(folder_path, filename)
            processed_path = os.path.join(processed_folder, filename)

            with Image.open(image_path) as image:
                image.save(processed_path, optimize=True, quality=50)

结果展示与总结

完成压缩后,我们将弹出一个消息框来通知用户压缩过程已完成。下面是代码片段:

# 代码片段3
import wx

# ...

def compress_images(self, folder_path):
    # ...

    wx.MessageBox("图像压缩完成!", "完成", wx.OK | wx.ICON_INFORMATION)

通过运行上述代码,我们可以得到一个简单而实用的图像压缩应用程序。用户只需点击"选择文件夹"按钮,选择要压缩的文件夹路径,然后程序将自动压缩该文件夹下的所有JPEG图像,并将压缩后的文件保存在新建的"processed"文件夹中。
压缩前:
在这里插入图片描述
压缩后:
在这里插入图片描述

结语

使用wxPython和Pillow库,我们能够轻松实现图像压缩的自动化过程。这个图像压缩神器不仅能够帮助我们节省存储空间,还可以加快图像在网络上的传输速度。希望本文对你理解如何使用Python编程来处理图像压缩有所帮助。

你可以根据自己的需求进一步扩展这个应用程序,例如添加进度条、支持其他图像格式等。通过将代码修改和适应,你可以创建自己的独特图像处理工具。

让我们摆脱图像文件过多的困扰,使用这个图像压缩神器,让我们的存储空间更有效率吧!

相关推荐

  1. jpeg压缩基本步骤

    2024-03-15 09:54:01       54 阅读
  2. 使用Python多线程批量压缩图片文件

    2024-03-15 09:54:01       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 09:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 09:54:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 09:54:01       82 阅读
  4. Python语言-面向对象

    2024-03-15 09:54:01       91 阅读

热门阅读

  1. 【备忘录】kafka常用命令维护

    2024-03-15 09:54:01       36 阅读
  2. postman学习

    2024-03-15 09:54:01       33 阅读
  3. html5&css&js代码 011 个人简历二

    2024-03-15 09:54:01       37 阅读
  4. c 语言stdlib.h介绍

    2024-03-15 09:54:01       35 阅读
  5. Spring Boot 事务管理(事务失效常见场景)

    2024-03-15 09:54:01       42 阅读
  6. Python中的区块链技术与应用

    2024-03-15 09:54:01       40 阅读
  7. 每日OJ题_简单多问题dp①_力扣LCR 089. 打家劫舍

    2024-03-15 09:54:01       36 阅读
  8. ChatGPT创造力与创新探究

    2024-03-15 09:54:01       40 阅读
  9. Hive连接函数 concat 和 concat_ws 使用示例

    2024-03-15 09:54:01       36 阅读
  10. 如果保障服务器的安全

    2024-03-15 09:54:01       43 阅读