Python PIL库是Python的一种图像处理库,它提供的Image
类中resize()
方法用于调整图像大小,可以通过指定目标大小或者缩放比例来实现。
一、resize()方法基本使用
函数原型:Image.resize(size, resample=None, box=None, reducing_gap=None)
参数解释:
- size:目标大小,接受一个二维元组。例如,
size = (width, height)
即为目标宽度和目标高度 - resample:重新采样方法。默认值是
None
,表示从输入图像中选择一个合适的方法(也就是自适应方法)。如需重新采样图像,请设置为PIL.Image.NEAREST、PIL.Image.BOX、PIL.Image.BILINEAR、PIL.Image.HAMMING、PIL.Image.BICUBIC或PIL.Image.LANCZOS。有关这些方法的更多信息请参见PIL在线文档。 - box:由长度为4的元组(x0, y0, x1, y1)定义输入图像的区域。
- reducing_gap:用于缩小时对输入图像进行降采样的递减步长。默认为4.0,表示对输入图像的缩小系数是0.5。
返回值:
返回一个新的Image
对象,该对象表示新的大小。
下面是一个基础示例,它将一个128x128的图片裁剪成64x64大小:
from PIL import Image
# 打开图像
img = Image.open('example.png')
# 调整大小
resized = img.resize((64, 64))
# 保存图像
resized.save('resized.png')
二、缩放比例
如果想把图像的尺寸缩放到原来的一半,即0.5倍,可以使用下面的代码:
from PIL import Image
# 打开图像
img = Image.open('example.png')
# 调整大小
width, height = img.size
resized = img.resize((int(width * 0.5), int(height * 0.5)))
# 保存图像
resized.save('resized.png')
三、不同重采样方法
重采样方法是指调整图像大小时所用的插值算法。PIL.Image库提供的重采样方法有:NEAREST (最近邻插值法)、BOX (box采样)、BILINEAR(双线插值)、HAMMING(汉明窗口函数插值)、BICUBIC(三次卷积插值)、LANCZOS(兰索斯窗口函数插值)等等。下面,我们分别演示各种重采样方法的效果:
from PIL import Image
# 打开图像
img = Image.open('example.png')
# NEAREST方法示例
resized = img.resize((200, 200), Image.NEAREST)
resized.save('resized_nearest.png')
# BILINEAR方法示例
resized = img.resize((200, 200), Image.BILINEAR)
resized.save('resized_bilinear.png')
# BICUBIC方法示例
resized = img.resize((200, 200), Image.BICUBIC)
resized.save('resized_bicubic.png')
# LANCZOS方法示例
resized = img.resize((200, 200), Image.LANCZOS)
resized.save('resized_lanczos.png')
通过上面这些演示代码,我们可以更好的理解重采样方法在图像尺寸调整时的不同效果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python PIL Image.resize()方法 - Python技术站