PIL库的总结与简单应用

一.PIL库的简单介绍

1、PIL (Python Imaging Library)是 Python 中最常用的图像处理库,PIL支持图像存储、显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。

2、PIL库主要可以实现图像归档和图像处理两方面功能需求。

  (1)图像归档:对图像进行批处理、生成图像预览、图片格式转换等

  (2)图像处理:图像基本处理、像素处理、颜色处理等

3、根据功能的不同,PIL库共包括21个与图片相关的类,这些类可以被看做是子库或PIL库中的模块,Image是最常用的类(其他的类就不在此一一列出)

二.Image类的详细解析

1、文件的读取和创建   

          方法                描述 
Image.open(filename) 根据参数加载图片文件
Image.new(mode,size,color) 根据给定参数创建一个新的图像
Image.frombytes(mode,size,date) 根据像素点date创建图像
Image.open(StringIO,StringIO(buffer)) 从字符串中获取图像
Image.verify() 对图像文件完整性进行检查,返回异常

       

   

eg.加载一个图像文件(最简单的形式)

2、Image类的常用属性

属性 描述
Image.format 识别图像格式或来源,如果图像不是从文件读取,值为None
Image.mode 图像的色彩模式,“L”为灰色图像、“RGB”为真彩色图像、“CMYK”为出版图像
Image.size 图像的宽度和高度,单位是像素(px),返回值是二元元组(tuple)
Image.palette  调色板属性,返回一个ImagePalette类型

 

 

 

 

 

 

 

eg.查看图像文件的属性

 

 

3、Image还能读取序列类图像文件,包括  gif /   fli  /  flc  /  tiff 等文件格式。open()方法打开一个图像时自动加载序列中的第一帧,使用seek()和tell()方法在不同帧之间的移动:

//Image类的序列图像操作处理

方法 描述
Image.seek(frame) 跳转并返回图像中的指定帧
Image.tell() 返回当前帧的序列

 

 

 

eg.对一个GIF格式动态文件,提取其中个帧图像,并保存为文件:

 

4、Image类的图像转换和保存方法

方法 描述
Image.save(filenma,format) 将图像保存为filename文件名,format是图片格式
Image.convert(mode) 使用不同的参数,转换图像为新的模式
Image.thumbnail(size) 创建图像的缩略图,size是缩略图尺寸的二元元组

 

 

 

 

 

 

#open()和save()的参数是:文件名filename和图像格式formt

eg.

5、Image类的图像旋转和缩放方法

方法 描述
Image.resize(size) 按size大小调整图像,生成副本
Image.rotate(angle) 按angle角度旋转图像,生成副本

 

 

 

 

 

eg.图像文件的缩小

代码示意如下:

 

1 from PIL import Image
2 im=Image.open("D:\Python\小宠物.jpg")#读取图像
3 print(im.format,im.size,im.mode)#读取图像文件的属性
4 im.show()
5 im_resized = im.resize((500, 400))    #原图像缩放为500x400 
6 im_resized.show() 

 

效果图:

 

 

6、Image类能够对每个想像素点或者一幅RGB图像的每个通道单独进行操作。split()方法能够将RGB图像通道提取出来,merge()方法能够将各独立通道再合成一幅新的图像。

Image类的图像像素和通道处理方法:

方法 描述
Image.point(func) 根据函数func的功能对每个元素进行运算,返回图像副本
Image.split() 提取RGB图像的每个颜色通道,返回图像副本
Image.merge(mode,bands) 合并通道,其中mode表示色彩,bands表示新的色彩通道
Image.blend(im1,im2,alpha)

将两幅图片im1和im2按照如下公式插值后生成新的图像:

im1*(1.0-alpha)+im2*alpha

三、图像的过滤和增强

PIL库的Imagefilter类和ImageEnhance类提供过滤图像和增强图像的方法。

方法表示 描述
Imagefilter.BLUR 图像的模糊效果
Imagefilter.CONTOUR 图像的轮廓效果
Imagefilter.DETAIL 图像的细节效果
Imagefilter.EDGE_ENHANCE 图像的边界加强效果
Imagefilter.EDGE_ENHANCE_MODE 图像的阈值边界加强效果
Imagefilter.EMBOSS 图像的浮雕效果
Imagefilter.FIND_EDGES 图像的边界效果
Imagefilter.SMOOTH 图像的平滑效果
Imagefilter.SMOOTH_MORE 图像的阈值平滑效果
Imagefilter.SHARPEN 图像的锐化效果

#利用Image类的filter()方法可以使用ImageFilter类,使用方法如下:

Image.filter(ImageFilter.function)

eg.图像轮廓的获取:

 

from PIL import Image
from PIL import ImageFilter
im=Image.open("D:\Python\小宠物.jpg")#读取图像
om=im.filter(ImageFilter.CONTOUR)
om.save("D:\Python\小宠物.jpg")
im.show()

 

效果图:

 

 

 

7、ImagEnhance类提供了更高级的图像增强功能,如调整色彩度、亮度、对比度、锐化等。

ImagEnhance类的图像增强和滤镜方法:

方法 描述
ImagEnhance.enhance(factor) 对选择属性的数值增强factor倍
ImagEnhance.Color(im) 调整图像的颜色平衡
ImagEnhance.Contrast(im) 调整图像的对比度
ImagEnhance.Brightness(im) 调整图像的亮度
ImagEnhance.Sharpness(im) 调整图像的锐度

eg.图像对比度增强效果(增强图像的对比度为初始的10倍)

from PIL import Image
from PIL import ImageEnhance
im=Image.open("D:\Python\小宠物.jpg")#读取图像
om=ImageEnhance.Contrast(im)
om.enhance(10).save('D:\Python\小宠物.jpg')
im.show()

效果图:

 

 

 四、jif图像的制作

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/yyp-20190107/p/10682850.html