详解在Python中使用Pillow改变图像分辨率

  • Post category:Python

下面是在Python中使用Pillow改变图像分辨率的完整攻略,过程中包含两条示例说明:

1. 安装 Pillow

Pillow 是 Python 中一个方便使用的图像处理库,安装如下:

pip install pillow

2. 打开图像文件

使用 Pillow 打开一张图像文件:

from PIL import Image

# 打开图像文件
with Image.open('sample.jpg') as img:
    # 图像尺寸
    print('原始尺寸:', img.size)
    # 显示图像
    img.show()

其中,sample.jpg 是一张图片文件,可以改成你自己的文件名和路径。

3. 改变图像分辨率

使用 Image.resize() 方法改变图像分辨率,代码如下:

from PIL import Image

# 打开图像文件
with Image.open('sample.jpg') as img:
    # 图像尺寸
    print('原始尺寸:', img.size)
    # 显示图像
    img.show()

    # 改变图像分辨率
    size = (600, 600)
    resized_img = img.resize(size)

    # 显示新的图像
    resized_img.show()
    # 新图像尺寸
    print('新尺寸:', resized_img.size)

上面的代码将图像的分辨率从原来的大小改为 (600, 600)

在这里,我们使用 size 变量来指定新图像的分辨率,官方文档提醒我们,使用 resize 方法时,应该同时指定图像的缩放算法,例如:

resized_img = img.resize(size, resample=Image.LANCZOS)

具体的图像缩放算法可以根据实际需要进行选择。

4. 保存新图像

如果需要保存新图像,可以使用 Image.save() 方法:

from PIL import Image

# 打开图像文件
with Image.open('sample.jpg') as img:
    # 改变图像分辨率
    size = (600, 600)
    resized_img = img.resize(size)

    # 保存新图像
    resized_img.save('resized.jpg')

注意要指定新图像的文件名,否则会覆盖原始图像。

示例说明

下面给出两个示例:

示例 1. 改变图像分辨率并旋转

from PIL import Image

with Image.open('sample.jpg') as img:
    # 改变图像分辨率
    size = (600, 600)
    resized_img = img.resize(size)

    # 旋转图像
    rotated_img = resized_img.rotate(90)

    # 显示和保存新图像
    rotated_img.show()
    rotated_img.save('resized_and_rotated.jpg')

示例 2. 获取原始图像分辨率

from PIL import Image

with Image.open('sample.jpg') as img:
    # 原始图像分辨率
    print('原始分辨率:', img.info['dpi'])

    # 改变图像分辨率
    size = (600, 600)
    resized_img = img.resize(size)

    # 新图像分辨率
    print('新分辨率:', resized_img.info['dpi'])

注意,要获取分辨率信息,需要在图像对象(如 imgresized_img)中访问 info['dpi'] 属性。