Python 如何和PIL压缩图像

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使用。您可以调整压缩图像的质量和大小,以在图像质量和文件大小之间达到合适的平衡。无论您是网站开发人员还是业余摄影师,掌握图像压缩是一项有价值的技能,可以提升您的数字存在。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程