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 库让读者更好地了解如何对图片进行优化处理。需要注意的是,在实际项目中不同的图片应用场景需要选用不同的图片优化策略,才能在兼顾用户视觉体验的同时提高页面响应速度。