【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()


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


发布了29 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36834959/article/details/79844044