详解Python PIL Image.resize()方法

  • Post category:Python

Python PIL(Python Imaging Library)是Python的一个图像处理库,提供了一系列的图像处理方法。其中,Image.resize()方法可以改变图像的大小。

语法

PIL.Image.resize(size, resample=3, box=None, reducing_gap=None)
  • size:新图像的尺寸,可以是一个二元元组,也可以是一个整数(如果是整数,则表示将原图像按等比例缩放后的新的宽度或高度,例如resize(400)将图片的宽度等比例缩放至400像素);
  • resample:重采样方法,默认是“双线性”(PIL.Image.BILINEAR)。如果要放大图像,请使用“双立方插值”(PIL.Image.BICUBIC);
  • box:对一个区域进行裁剪(剪掉左、上、右、下四个方向的像素);
  • reducing_gap:用于resize方法中缩小时的降采样率,可以有效加快缩小操作的速度。

示例:

实例1:将图像缩放至指定大小

from PIL import Image

im = Image.open("image.jpg")
width, height = im.size
im_resized = im.resize((width//2, height//2))
im_resized.save("image_resized.jpg")

上述代码将根据原图像的宽度和高度,将图片缩小1/2后输出。

实例2:使用“双立方插值”方法放大图像

from PIL import Image

im = Image.open("image.jpg")
width, height = im.size
im_resized = im.resize((width*2, height*2), resample=Image.BICUBIC)
im_resized.save("image_enlarged.jpg")

上述代码将使用“双立方插值”方法将原图像分别放大2倍,输出放大后的图片。

需要注意的是,放大图像会涉及到像素的插值问题,如果使用“双线性”或默认值作为重采样方法会导致图片的质量下降。而“双立方插值”方法可以更好地保留图像的细节。