详解Python PIL Image.thumbnail() 方法

  • Post category:Python

PIL(Python Imaging Library)是一个非常强大的图像处理库,Image.thumbnail()是其中一个实用的方法。本文将详细讲解这个方法的使用和参数解释,并提供两条示例说明。

Image.thumbnail()方法

方法简介

Image.thumbnail(size, resample=None)

其中,size是一个二元素的tuple,表示输出的尺寸大小。

resample指定重采样算法。重采样算法用于计算缩放图像时新像素值的级别。可选的值有:Image.NEAREST(最近邻),Image.BOX(框滤波器),Image.BILINEAR(双线性),Image.HAMMING(汉宁窗调整的正弦曲线),Image.BICUBIC(双三次),和Image.LANCZOS(高质量的Lanczos滤波器)。

这个方法会在原始图像上改变大小,而不会返回新的图像对象。

参数解释

size:一个二元素的tuple,表示输出的尺寸大小。如果图像比指定的大小小,则不会改变大小。如果图像比指定的大小大,则将缩小图像以适应该尺寸。

resample:重采样算法。可选值为:Image.NEAREST(最近邻),Image.BOX(框滤波器),Image.BILINEAR(双线性),Image.HAMMING(汉宁窗调整的正弦曲线),Image.BICUBIC(双三次),和Image.LANCZOS(高质量的Lanczos滤波器)。

示例说明

示例一

from PIL import Image

# 打开一张图片
im = Image.open('test.jpg')

# 输出原图尺寸
print(im.size)

# 缩小图片,并覆盖原图
im.thumbnail((200, 200))

# 输出新图尺寸
print(im.size)

# 保存新图
im.save('new.jpg')

这个例子演示了如何使用Image.thumbnail()方法缩小图片。它首先打开一个名为“test.jpg”的图像。然后它输出原始图像的尺寸。接下来,它将缩小图像以适应200×200大小,并覆盖原图像。然后它输出新的图像尺寸,并保存新图像。

示例二

from PIL import Image

# 打开一张图片
im = Image.open('test.jpg')

# 输出原图尺寸
print(im.size)

# 缩小图片,但不覆盖原图
im2 = im.copy()
im2.thumbnail((200, 200))

# 输出新图尺寸
print(im2.size)

# 保存新图
im2.save('new.jpg')

这个例子演示了如何使用Image.thumbnail()方法缩小图片,但不覆盖原始图像。它打开一张名为“test.jpg”的图像,然后输出其原始尺寸。做此操作时,它复制了原图像立起来新的图像对象,以便在不覆盖原图像的情况下缩小图像。然后它将返回的新图像对象和输出其新的尺寸,最后保存新图像。

这两个示例可以让你更好地理解PIL库的缩放规则和thumbnail()方法的使用。你可以根据你自己的需求适当调整参数,以获取最优的缩放效果。