下面是基于Python和PIL库来压缩图像的完整攻略。
1. 安装PIL库
PIL库是Python中常用的处理图像的库,具有丰富的功能,包括图像的读取、修改、保存等。在使用PIL库之前需要先安装。
使用 pip
命令进行安装,命令如下:
pip install pillow
2. 加载和打开图片
使用PIL库打开图片,代码如下:
from PIL import Image
def load_image(filepath):
'''
加载图片
:param filepath: 图片文件路径
:return: Image对象
'''
with open(filepath, 'rb') as f:
image = Image.open(f)
return image
其中 load_image(filepath)
函数用来加载图片,参数 filepath
为图片文件路径,返回一个 Image
对象。
3. 压缩图片
PIL库中的 Image
对象有一个 thumbnail(size, resample=3)
方法,可以用来压缩图片。其中 size
为元组类型,表示压缩后的图片大小, resample
表示压缩方法,默认值为3,此处不作过多介绍。
下面是一个简单的例子,将图片压缩为宽度和高度缩小一半的大小:
from PIL import Image
def load_image(filepath):
'''
加载图片
:param filepath: 图片文件路径
:return: Image对象
'''
with open(filepath, 'rb') as f:
image = Image.open(f)
return image
def compress_image(image, output_path):
'''
压缩图片
:param image: Image对象
:param output_path: 压缩后的图片保存路径
'''
# 获取压缩后的大小
size = (image.width // 2, image.height // 2)
# 压缩图片
image.thumbnail(size)
# 保存图片
with open(output_path, 'wb') as f:
image.save(f)
其中 compress_image()
函数用来压缩图片,参数 image
为要压缩的 Image
对象,参数 output_path
表示压缩后的图片保存路径。
示例1:压缩单张图片
image_path = 'test.jpg'
image = load_image(image_path)
output_path = 'test_compressed.jpg'
compress_image(image, output_path)
以上代码压缩名为 test.jpg 的图片,并将压缩后的图片保存到 test_compressed.jpg。
示例2:批量压缩图片
import os
def compress_images_in_folder(folder, output_folder):
'''
批量压缩图片
:param folder: 原始图片所在文件夹路径
:param output_folder: 压缩后的图片保存文件夹路径
'''
# 遍历原始图片所在文件夹
for filename in os.listdir(folder):
image_path = os.path.join(folder, filename)
# 判断是否是图片文件
if not os.path.isfile(image_path) or not image_path.endswith(('.jpg', '.jpeg')):
continue
# 加载图片
image = load_image(image_path)
# 获取输出文件路径
output_path = os.path.join(output_folder, filename)
# 压缩图片
compress_image(image, output_path)
以上代码用来批量压缩一个文件夹中的图片,并将压缩后的图片保存到另一个文件夹中。其中 compress_images_in_folder()
函数用来压缩指定文件夹中的所有图片,参数 folder
表示原始图片所在文件夹路径,参数 output_folder
表示压缩后的图片保存文件夹路径。