文章目录
PIL的Image类,提供了一些常用的图像处理方法。
切割缩放和旋转
PIL可以很方便地实现如下效果
代码如下
from PIL import Image
path = 'lena.jpg'
img = Image.open(path) # 读取
img.resize((50, 50), resample=Image.Resampling.NEAREST).save("resize.png")
img.crop((0, 0, 200, 200)).save('crop.png') # 截取
img.rotate(60).save("rotate.png")
【resize】为缩放函数,其首个参数为缩放后的尺寸。图像经过缩放之后,像素个数会发生变化,resample参数可以指定其填充像素的方法,支持的参数类型是Image中的枚举格式Resampling,默认为双三次插值BICUBIC,此外,还支持最邻近插值NEAREST;双线性插值BILINEAR;汉明插值HAMMING;以及BOX插值和LANCZOS插值。BOX插值在图像放大时与NEAREST相同,压缩时采取附近像素的平均值。
【crop】为裁切函数,输入参数为左、上、右、下端点处的像素坐标。
【routate】为旋转函数,输入为旋转角度。
滤波
filter方法可以实现图像滤波,效果如下
这些效果都是通过ImageFilter中预定义的滤波类实现的,代码如下
from PIL import ImageFilter
img.filter(ImageFilter.BLUR).save("BLUR.png")
img.filter(ImageFilter.CONTOUR).save("CONTOUR.png")
img.filter(ImageFilter.FIND_EDGES).save("FIND_EDGES.png")
这些滤波类没有参数,可以直接调用
- 【BLUR】模糊
- 【CONTOUR】提取轮廓
- 【DETAIL】貌似没什么变化
- 【EDGE_ENHANCE】边缘增强
- 【EDGE_ENHANCE_MORE】边缘更增强
- 【EMBOSS】浮雕
- 【FIND_EDGES】边缘查找
- 【SHARPEN】锐化
- 【SMOOTH】平滑
- 【SMOOTH_MORE】更加平滑
拼接
上面那张由三种不同滤波组合而成的图像,也可以通过PIL来生成,代码如下
pImg = Image.new("RGB", size=(1536, 512))
pImg.paste(img.filter(ImageFilter.BLUR), (0, 0, 512, 512))
pImg.paste(img.filter(ImageFilter.FIND_EDGES), (512, 0, 1024, 512))
pImg.paste(img.filter(ImageFilter.CONTOUR), (1024, 0, 1536, 512))
pImg.save("pImg.png")
【new】可以生成一张新的图像,第一个参数是图像的色彩模式。
【paste】可将一张图像,粘贴到当前图像中,必须注意,这个方法会修改当前图像的值。其第一个输入参数,就是准备贴入的图像,第二个参数粘贴位置。
标签:PIL,img,缩放,Python,ImageFilter,filter,save,png From: https://blog.csdn.net/m0_37816922/article/details/143324962