在PIL中,常使用Image类来进行图片操作
图片读取
使用Image类中的open(fp,mode="r")来读取图片
from PIL import ImageFilter,Image
image = Image.open(pic_path)
image有三个比较重要的属性:
- format:图像的格式,常见的"JPG","PNG"等,本例 JPEG
- size :返回一个tuple对象,(width,height ) ,本例(600,405)
- mode:为图像的像素格式,常见的有“RGB”和“L”(灰度)。本例 RGB
图像的保存
使用Image类对象时,可以快速的保存图片
image.save("image/save.jpg")
图像的展示
image.show()
图像的大小调整
当我们遇到大小不称心的图片时,我们可以利用resize((weight,height))来解决问题
image.resize((100,100))
图像的裁剪
使用image类的crop((x0,y0,x1,y1))可以达到裁剪的效果
crop = image.crop((100,100,300,300))
图像的旋转
可以使用image类的rotate(α,expand=False) (α可以是弧度,也可以是角度)来旋转图像
rotate = image.rotate(30)
rotate1 = image.rotate(-30,expand = True)#这会使图片不被裁剪
可以从图片观察到,第一张图片损失了图片上的一些有效部分,第二张没有损失掉,原因就是在expand=true
图片的翻转
图片的镜面翻转可以通过transpose来解决
#Image.FLIP_LEFT_RIGHT或者Image.FLIP_TOP_BOTTOM,第一个是水平翻转,第二个是垂直翻转。
trans = image.transpose(Image.FLIP_LEFT_RIGHT)
trans1 = image.transpose(Image.FLIP_TOP_BOTTOM)
图片通道
彩色图片->灰色
image = image.convert('L')
分离三通道,可以得到rgb每个通道的像素值
r,g,b = image.split()
合并三通道
image = image.merge('RGB',(r,g,b))
一些其他的用法
image.filter(ImageFilter.GaussianBlur)
# 普通模糊
image.filter(ImageFilter.BLUR)
# 边缘增强
image.filter(ImageFilter.EDGE_ENHANCE)
# 找到边缘
image.filter(ImageFilter.FIND_EDGES)
# 浮雕
image.filter(ImageFilter.EMBOSS)
# 轮廓
image.filter(ImageFilter.CONTOUR)
# 锐化
image.filter(ImageFilter.SHARPEN).save('SHARPEN.jpg')
# 平滑
image.filter(ImageFilter.SMOOTH).save('SMOOTH.jpg')
# 细节
image.filter(ImageFilter.DETAIL).save('DETAIL.jpg')