在当今的数字时代,图像已成为我们生活中必不可少的一部分。他们在从社交媒体到网站的各种平台上的沟通和表达中发挥着重要且显着的作用。然而,高质量的图像可能会消耗大量的存储空间,并且会导致网站加载时间变慢和上传时间变长。图像压缩在这种情况下变得适用。通过减小图像的大小,您可以确保更快的加载时间、更低的带宽使用量和更多的存储空间。
在本文中,我们将研究使用 Python 和 PIL 压缩图像的过程。 PIL,也称为 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/s
Installing collected packages: Pillow
Successfully installed Pillow-8.4.0
登录后复制
第 2 步:导入所需的库
安装PIL后,您需要将所需的库导入到您的Python程序中。为此,请在 Python 文件的开头添加以下代码行:
from PIL import Image
import os
登录后复制
第 3 步:加载图像
现在在导入所需的库之后,让我们加载我们想要压缩的图像。为此,我们可以使用PIL库中的Image.open()方法。
image = Image.open('image.jpg')
登录后复制
这段代码打开名为'image.jpg'的图像,并将其赋值给变量'image'。
步骤 4:调整图像大小
加载图像后,我们需要调整其大小以减小其文件大小。为此,我们可以使用 Image 模块中的 resize() 方法。
width, height = image.size
new_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 Image
import os
image = Image.open('image.jpg')
width, height = image.size
new_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: 1234567
Compressed Size: 543210
登录后复制
请注意,实际文件大小将取决于用于代码的输入图像。这只是一个示例。
结论
总之,我们讨论了有损压缩和无损压缩之间的区别,以及后者在保持图像质量方面更好,但占用更多空间。然后,我们逐步介绍了如何使用Python中的PIL来压缩图像的指南。我们学会了如何调整图像的大小并以压缩格式保存,以及一些最佳实践,以确保最佳结果。
按照本文中概述的步骤,您可以轻松压缩图像并优化它们以供 Web 使用。您可以调整压缩图像的质量和大小,以在图像质量和文件大小之间取得适当的平衡。无论您是网站开发人员还是业余摄影师,掌握图像压缩都是一项宝贵的技能,可以增强您的数字形象。
以上就是如何使用Python和PIL压缩图像?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!