如何使用Python和PIL压缩图像?

如何使用python和pil压缩图像?

在当今的数字时代,图像已成为我们生活中必不可少的一部分。他们在从社交媒体到网站的各种平台上的沟通和表达中发挥着重要且显着的作用。然而,高质量的图像可能会消耗大量的存储空间,并且会导致网站加载时间变慢和上传时间变长。图像压缩在这种情况下变得适用。通过减小图像的大小,您可以确保更快的加载时间、更低的带宽使用量和更多的存储空间。

在本文中,我们将研究使用 Python 和 PIL 压缩图像的过程。 PIL,也称为 Python 图像库。它是 Python 中一个非常有用且重要的库,可以打开、操作和保存各种图像文件格式。通过掌握该库的功能,我们可以轻松压缩图像并获得更快的加载时间和更少的存储空间的好处。

在我们深入代码之前,让我们快速了解一下不同类型的图像压缩。

图像压缩的类型

图像压缩主要有两种类型:有损和无损。

立即学习“Python免费学习笔记(深入)”;

点击下载“嗨格式压缩大师”;

有损压缩:有损压缩是一种在压缩过程中会丢失一些数据的压缩类型。这意味着当您解压缩图像时,它将与原始图像不完全相同。然而,这种差异通常对人眼来说是不可察觉的。有损压缩的示例包括JPEG和GIF。

无损压缩:无损压缩是一种在压缩过程中不丢失任何数据的压缩类型。这意味着当您解压缩图像时,它将与原始图像完全相同。无损压缩的例子包括PNG和TIFF。

现在我们已经了解了不同类型的图像压缩,让我们继续讨论代码。

如何使用Python和PIL压缩图像

步骤1:安装PIL

第一步是安装 PIL 库。为此,您可以使用 pip。打开终端或命令提示符并键入以下命令:

pip install Pillow

登录后复制

成功消息

Collecting Pillow  Downloading Pillow-8.4.0-cp39-cp39-win_amd64.whl (3.2 MB)     |████████████████████████████████| 3.2 MB 2.1 MB/sInstalling collected packages: PillowSuccessfully installed Pillow-8.4.0

登录后复制

第 2 步:导入所需的库

安装PIL后,您需要将所需的库导入到您的Python程序中。为此,请在 Python 文件的开头添加以下代码行:

from PIL import Imageimport os

登录后复制

第 3 步:加载图像

现在在导入所需的库之后,让我们加载我们想要压缩的图像。为此,我们可以使用PIL库中的Image.open()方法。

image = Image.open('image.jpg')

登录后复制

这段代码打开名为’image.jpg’的图像,并将其赋值给变量’image’。

步骤 4:调整图像大小

加载图像后,我们需要调整其大小以减小其文件大小。为此,我们可以使用 Image 模块中的 resize() 方法。

width, height = image.sizenew_size = (width//2, height//2)resized_image = image.resize(new_size)

登录后复制

此代码会将图像大小调整为原始大小的一半。您可以根据需要更改图像的大小。

第5步:保存压缩图像

调整图像大小后,我们需要保存压缩后的图像。为了做到这一点,我们可以使用Image模块中的save()方法。

resized_image.save('compressed_image.jpg', optimize=True, quality=50)

登录后复制

在压缩图像之后,我们需要将其保存为一个新文件。这段代码将压缩后的图像保存为名为’compressed_image.jpg’的文件。我们可以使用’optimize’参数来确保图像经过了优化以适用于网络。此外,我们还可以根据需要使用’quality’参数来调整图像的质量。

第 6 步:验证压缩图像

最后,我们需要验证压缩后的图像是否已正确保存。为此,我们可以比较原始图像和压缩图像的文件大小。

original_size = os.path.getsize('image.jpg')compressed_size = os.path.getsize('compressed_image.jpg')print("Original Size: ", original_size)print("Compressed Size: ", compressed_size)

登录后复制

这段代码将打印出原始图像和压缩图像的文件大小。您可以验证压缩图像比原始图像更小。

这是完整的实现代码

示例

from PIL import Imageimport osimage = Image.open('image.jpg')width, height = image.sizenew_size = (width//2, height//2)resized_image = image.resize(new_size)resized_image.save('compressed_image.jpg', optimize=True, quality=50)original_size = os.path.getsize('image.jpg')compressed_size = os.path.getsize('compressed_image.jpg')print("Original Size: ", original_size)print("Compressed Size: ", compressed_size)

登录后复制

输出

Original Size:  1234567Compressed Size:  543210

登录后复制

请注意,实际文件大小将取决于用于代码的输入图像。这只是一个示例。

结论

总之,我们讨论了有损压缩和无损压缩之间的区别,以及后者在保持图像质量方面更好,但占用更多空间。然后,我们逐步介绍了如何使用Python中的PIL来压缩图像的指南。我们学会了如何调整图像的大小并以压缩格式保存,以及一些最佳实践,以确保最佳结果。

按照本文中概述的步骤,您可以轻松压缩图像并优化它们以供 Web 使用。您可以调整压缩图像的质量和大小,以在图像质量和文件大小之间取得适当的平衡。无论您是网站开发人员还是业余摄影师,掌握图像压缩都是一项宝贵的技能,可以增强您的数字形象。

以上就是如何使用Python和PIL压缩图像?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2225495.html

(0)
上一篇 2025年2月26日 11:17:11
下一篇 2025年2月25日 11:22:05

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python程序从JSON响应中提取单个值

    值提取是一个非常流行的编程概念,它被用于各种各样的操作中。然而,从 JSON 响应 中提取值是一个不同的概念。它帮助我们在复杂的数据集中构建逻辑并定位特定值。本文将解释可用于从 JSON 响应中提取单个值的各种方法。在开始值提取之前,让我们…

    2025年2月26日
    200
  • 使用Tkinter在Python中的Place_forget()方法

    tkinter, a popular gui toolkit for python, offers a plethora of tools to design intuitive and interactive interfaces, am…

    2025年2月26日
    200
  • Python随机模块

    在编程世界中,生成随机值的能力通常至关重要。无论您是在开发游戏、模拟、统计模型,还是只是需要在程序中引入可变性,拥有可靠且有效的方法来生成随机数都是至关重要的。这就是 Python Random 模块的用武之地。 Python Random…

    2025年2月26日
    200
  • Python程序获取数组中最后给定数量的项

    数组是由许多具有相同数据类型的元素组成的数据结构,每个元素由索引标识。 [2, 4, 0, 5, 8] 登录后复制 Python中的数组 Python没有自己的数据结构来表示数组。然而,我们可以使用列表数据结构作为数组的替代方案。在这里,我…

    2025年2月26日
    200
  • 使用Python进行RFM分析

    Python是一种多功能的编程语言,在数据分析和机器学习领域广受欢迎。其简洁性、可读性和丰富的库使其成为处理复杂数据任务的理想选择。其中一个强大的应用是RFM分析,这是一种在营销中根据客户购买行为进行分割的技术。 在本教程中,我们将通过使用…

    2025年2月26日
    200
  • 在Python机器学习脚本中,什么是内存错误?

    介绍 使用 Python 机器学习程序时,内存问题是一个常见的复杂问题,尤其是在处理大量数据集时。犯这些错误可能会影响代码的性能,并使其难以完成要求较高的机器学习任务。内存错误是运行时错误的一个例证;当某个软件尝试分配超出系统处理能力的内存…

    2025年2月26日
    200
  • 为什么在Python中,id()的结果似乎不是唯一的?

    Python 中的 id() 方法返回对象的标识,即指定对象的唯一 ID。现在,您可能想知道,这个 id() 是什么。 这里的 id 是对象的内存地址,一个整数,保证该对象在其生命周期内是唯一且恒定的。具有不重叠生命周期的两个对象可能具有相…

    2025年2月26日
    200
  • 如何使用Python和PyWebIO创建BMI计算器Web应用程序?

    pywebio 是一个 python 库,可用于构建需要更简单 ui 的 web 应用程序。它提供了多种功能来创建简单的网络浏览器。任何人都可以使用 pywebio 构建简单的 web 应用程序,而无需事先了解 html 和 javascr…

    2025年2月26日 编程技术
    200
  • 使用Python进行高级网络爬虫:处理JavaScript、Cookies和CAPTCHA

    在数据驱动决策的时代,网络抓取已成为从网站中提取有价值信息不可或缺的技能。然而,随着网站变得更加动态和复杂,传统的抓取技术通常无法捕获所有所需的数据。这就是使用 Python 的高级网络抓取发挥作用的地方。本文深入探讨了处理 JavaScr…

    2025年2月26日
    200
  • 如何在Python数组中获取元素的地址?

    Python 是一种通用且广泛使用的编程语言,为用户提供了一系列用于处理各种数据结构的强大工具。一种这样的数据结构是数组,它是存储在相邻内存区域中的元素的集合。本文旨在引导您完成发现 Python 数组中元素位置的过程,这对于各种编程应用程…

    2025年2月26日
    200

发表回复

登录后才能评论