Pillow图像几何变换

图像的几何变换主要包括图像翻转、图像旋转和图像变换操作,Image 类提供了处理这些操作的函数 transpose()、rotate() 和 transform(),下面分别对它们进行讲解。

transpose图像翻转

transpose()翻转操作该函数可以实现图像的垂直、水平翻转

返回一个新的Image对象

语法格式如下:

Image.transpose(method)

method 参数决定了图片要如何翻转,参数值如下:

Image.FLIP_LEFT_RIGHT:左右水平翻转;

Image.FLIP_TOP_BOTTOM:上下垂直翻转;

Image.ROTATE_90:图像旋转 90 度;

Image.ROTATE_180:图像旋转 180 度;

Image.ROTATE_270:图像旋转 270 度;

Image.TRANSPOSE:图像转置;

Image.TRANSVERSE:图像横向翻转

1
2
3
4
from PIL import Image
img1 = Image.open("D:\\File\\All\\web\\python\\blog\\947849.jpg")
img2 = img1.transpose(Image.FLIP_LEFT_RIGHT)
img2.show()
rotate()任意角度旋转

当我们想把图像旋转任意角度时,可以使用 rotate() 函数,
产生一张规定大小的新图像
语法格式如下:
Image.rotate(angle, resample=PIL.Image.NEAREST, expand=None, center=None, translate=None, fillcolor=None)

参数说明如下:

angle:表示任意旋转的角度;

resample:重采样滤波器,默认为 PIL.Image.NEAREST 最近邻插值方法;

expand:可选参数,表示是否对图像进行扩展,如果参数值为 True 则扩大输出图像,如果为 False 或者省略,则表示按原图像大小输出;

center:可选参数,指定旋转中心,参数值是长度为 2 的元组,默认以图像中心进行旋转;

translate:参数值为二元组,表示对旋转后的图像进行平移,以左上角为原点;

fillcolor:可选参数,填充颜色,图像旋转后,对图像之外的区域进行填充。

1
2
3
4
from PIL import Image
img1 = Image.open("D:\\File\\All\\web\\python\\blog\\947849.jpg")
img2 = img1.rotate(50,translate=(100,100))
img2.show()
transform()图像变换

transform()图像变换该函数能够对图像进行变换操作,通过指定的变换方式,产生一张规定大小的新图像
语法格式如下:

Image.transform(size, method, data=None, resample=0)

参数说明:

size:指定新图片的大小 (元组);

method:指定图片的变化方式,比如 Image.EXTENT 表示矩形变换;

data:该参数用来给变换方式提供所需数据;

resample:图像重采样滤波器,默认参数值为 PIL.Image.NEAREST。

1
2
3
4
from PIL import Image
img1 = Image.open("D:\\File\\All\\web\\python\\blog\\947849.jpg")
img2 = img1.transform((1000,1000),Image.EXTENT,data=[0,0,30 + img1.width//4,img1.height//3])
img2.show()