详解Python PIL Image.transform()方法

  • Post category:Python

当我们需要对图片进行图像变换时,可以使用Python PIL库中的Image.transform()方法。它可以对图像进行平移、旋转、缩放等变换操作。

基本语法

Image.transform(size, method, data)方法有三个参数:

  • size:输出的图像尺寸。
  • method:变换方法,如Image.AFFINE表示仿射变换,Image.EXTENT表示裁剪。
  • data:变换数据,表示变换的参数。

下面是一个基本使用示例:

from PIL import Image

# 打开原始图片
im = Image.open('image.jpg')

# 定义变换参数
size = (100, 100)
method = Image.AFFINE
data = (1, 0, 0, 0, 1, 0)

# 进行图像变换
new_im = im.transform(size, method, data)

# 显示新的图片
new_im.show()

这个示例将原始图片变换为了100×100的图像,使用了仿射变换,并且并没有实际进行任何变换,只是将参数设定好了。

矩阵变换示例

下面是一个矩阵变换的示例:

from PIL import Image

# 打开原始图片
im = Image.open('image.jpg')

# 定义变换参数
size = (400, 400)
method = Image.AFFINE
data = (1, -0.5, 250, 0, 1, 0)

# 进行图像变换
new_im = im.transform(size, method, data)

# 显示新的图片
new_im.show()

这个示例将原始图片变为了400×400的图像,并将其向右平移250像素,并且向左倾斜了30度。

裁剪示例

下面是一个裁剪示例:

from PIL import Image

# 打开原始图片
im = Image.open('image.jpg')

# 定义变换参数
size = (400, 400)
method = Image.EXTENT
data = (50, 50, 300, 300)

# 进行图像变换
new_im = im.transform(size, method, data)

# 显示新的图片
new_im.show()

这个示例将原始图片裁剪成了一个300×300像素的图像,并且只保留原始图片中间的区域。