Python 如何和PIL压缩图像
在当今数字化时代,图像已成为我们生活中必不可少的一部分。它们在各种平台上,从社交媒体到网站,发挥着重要而显著的沟通和表达作用。然而,高质量的图像会占用大量存储空间,导致网站加载速度变慢,上传时间变长。在这种情况下,图像压缩变得很有用。通过减小图像的大小,您可以确保更快的加载速度,更低的带宽使用和更多的存储空间。
在本文中,我们将介绍使用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使用。您可以调整压缩图像的质量和大小,以在图像质量和文件大小之间达到合适的平衡。无论您是网站开发人员还是业余摄影师,掌握图像压缩是一项有价值的技能,可以提升您的数字存在。