python如何实现图片压缩

1. 前言

在 web 网页制作中,图片是重要的组成部分。虽然图片的质量和清晰度会更好地展示网页内容,但同时对于运行速度和存储空间也有着很大的消耗。为了更好地平衡显示效果和性能,我们通常需要对图片进行压缩。在本文中,我们将运用 Python 的 Pillow 库中的 Image 模块对图片进行压缩。

2. Pillow 库介绍

2.1 什么是 Pillow 库

Python Pillow 是支持图像处理的 Python 库。Pillow 是从 python-pil 发展而来的,是 Python 的第三方库之一,支持打开、处理、创建不同格式的图像文件。

2.2 安装 Pillow 库

安装 Pillow 可以使用 pip 工具进行安装。

pip install Pillow

3. 图片压缩

3.1 打开图片

首先,我们需要打开一张图片。

from PIL import Image

with Image.open('example.jpg') as im:

im.show()

注意:这里使用了 Python 的 with 语句,可以省略了对图片文件对象的关闭操作。

3.2 改变图片分辨率

在保持图片长宽比的情况下,如果分辨率降低,图片文件大小就会相应减小。使用 Image 模块中的 resize() 方法可以改变图片分辨率。

with Image.open('example.jpg') as im:

w, h = im.size

# 改变图片分辨率为原来的一半

im_resized = im.resize((w//2, h//2))

im_resized.save('example_resized.jpg')

提示:请尽量保证图片分辨率的处理后,对人眼不产生明显的影响。过大或过小的图片分辨率都会影响观感。

3.3 减少图片色彩位数

因为图片不是每个像素都需要非常详细的色彩信息,所以减少一些像素的色彩位数对于图片的视觉效果没有明显的影响,但文件大小会降低。

with Image.open('example.jpg') as im:

im_low_color = im.convert('P', palette=Image.ADAPTIVE, colors=64)

im_low_color.save('example_low_color.jpg')

提示:在进行减色时可以采用多种算法,根据具体需求进行选择。

3.4 改变图片质量

在 jpeg 格式的缩小头部信息中,有个参数叫 “quality” 表示压缩质量比例。这个参数的默认值是 75,我们可以将其值调整为任何值在 1 到 100 之间。调整质量比例时需要注意的是,很容易出现下载一个图片大小相同,但由于质量的受损,让人眼中有人工操作的痕迹。所以要适当调整图片的质量。

with Image.open('example.jpg') as im:

# quality 取值范围 1~100

im_low_quality = im.save('example_low_quality.jpg', quality=50)

3.5 同时组合多种方法

为了更好地优化图片,我们可以同时使用多种方法对图片进行处理。

with Image.open('example.jpg') as im:

# 修改分辨率为原来的一半

im = im.resize((im.size[0]//2, im.size[1]//2))

# 减少图片色彩位数至 64

im = im.convert('P', palette=Image.ADAPTIVE, colors=64)

# 调整图片质量至 50

im.save('example_final.jpg', quality=50)

以上就是我们实现图片压缩的核心内容了,最后进行 clear() 操作,释放内存。

im.close()

im_low_color.close()

im_low_quality.close()

im_resized.close()

4. 总结

本文中,我们介绍了图片压缩的基本方法,并且运用 Python 的 Pillow 库让读者更好地了解如何对图片进行优化处理。需要注意的是,在实际项目中不同的图片应用场景需要选用不同的图片优化策略,才能在兼顾用户视觉体验的同时提高页面响应速度。

后端开发标签