【python】PIL库的学习笔记1

使用官方文档和一些网络资料总结了一下PIL库的一些常用方法的使用,并写成小例子供参考

python PIL库的学习


1.对图像进行旋转


from PIL import Image
im=Image.open("image.jpg")
im.rotate(45).show()

2.改变图像的大小


size=128,128


from PIL import Image
im=Image.open("image.jpg")
im.thumbnail(size)   //等比例的缩放
im.show()


//注意,第一次的时候,由于直接在thumbnail方法中直接填入数字,导致出错,后来引入变量size,就成功了,所以推测需要引入变量

3.合并图像


Image.alpha_composite(im1,im2)
Image.blend(im1,im2,a)   
//a为第二张图像的透明度
Image.composite(im1,im2,mask)
Image.eval(im1,*args)

4.创建一个新图像


from PIL import Image


im=Image.new("RGBA",(400,600),(0,126,154))
im.save("new.png")
im.show()


//容易出的错误
//1.RGBA模式不能用于存储jpg格式的图片
//2.mode属性可以直接在引号中引用,其他两个属性在括号中引用


5.Image.copy()
图片的复制

6.图片的部分获取


from PIL import Image


im=Image.open("agirl.jpg")
im.crop((10,10,500,500)).show()


//crop中的参数是一个box
//按照左上右下排列,是一个四元组

7.图像的滤波


Image.filter("滤波器内核")




from PIL import Image
from PIL import ImageFilter


im=Image.open("agirl.jpg")
im_blur=im.filter(ImageFilter.BLUR)
im_detail=im.filter(ImageFilter.DETAIL)
im_blur.show()
im_detail.show()




ImageFilter类中预定义了如下滤波方法:




• BLUR:模糊滤波


• CONTOUR:轮廓滤波


• DETAIL:细节滤波


• EDGE_ENHANCE:边界增强滤波


• EDGE_ENHANCE_MORE:边界增强滤波(程度更深)


• EMBOSS:浮雕滤波


• FIND_EDGES:寻找边界滤波


• SMOOTH:平滑滤波


• SMOOTH_MORE:平滑滤波(程度更深)


• SHARPEN:锐化滤波


• GaussianBlur(radius=2):高斯模糊


>radius指定平滑半径。


• UnsharpMask(radius=2, percent=150, threshold=3):反锐化掩码滤波


>radius指定模糊半径;


>percent指定反锐化强度(百分比);


>threshold控制被锐化的最小亮度变化。


• Kernel(size, kernel, scale=None, offset=0):核滤波


当前版本只支持核大小为3x3和5x5的核大小,且图像格式为“L”和“RGB”的图像。


>size指定核大小(width, height);


>kernel指定核权值的序列;


>scale指定缩放因子;


>offset指定偏移量,如果使用,则将该值加到缩放后的结果上。


• RankFilter(size, rank):排序滤波


>size指定滤波核的大小;


>rank指定选取排在第rank位的像素,若大小为0,则为最小值滤波;若大小为size * size / 2则为中值滤波;若大小为size * size - 1则为最大值滤波。


• MedianFilter(size=3):中值滤波


>size指定核的大小


• MinFilter(size=3):最小值滤波器


>size指定核的大小


• MaxFilter(size=3):最大值滤波器


>size指定核的大小


• ModeFilter(size=3):波形滤波器


8.获取一个正方形盒子数据


im.getbbox()


from PIL import Image
from PIL import ImageFilter


im=Image.open("agirl.jpg")
print(im.getbbox())


//计算图像的边框值,并且返回一个四元组
//按照左上右下


9.返回使用在这张图片上的颜色值




from PIL import Image
from PIL import ImageFilter


im=Image.open("agirl.jpg")
print(im.getcolors())


//如果颜色超过最大值,将返回None


10.调整图片大小




Image.resize(size, resample=0, box=None)


from PIL import Image


im=Image.open("agirl.jpg")
im.resize((120,210)).show()


//第一个属性是一个长宽二元组
//返回的是一个复制原图片的改变大小的图片


11.图像旋转




Image.rotate(angle, resample=0, expand=0, center=None, translate=None)


from PIL import Image


im=Image.open("agirl.jpg")
im.rotate(45).show()
im.rotate(45,expand=1).show()


//第一种看图片效果是只旋转了图片
//第二种对原有图片进行了扩展,看着更舒服些


12.图像的储存


Image.save(fp, format=None, **params)


//第二个属性是格式的转换


13.图像文件的关闭




Image.close()


//不知道具体有什么影响,可能是不关闭会一直加载到没存中
//建议使用完之后习惯性的关闭图片


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值