Python学习之PIL库的使用
一、PIL库简介
1.安装PIL库
PIL库是Python的第三方库,需要手动通过pip工具安装。
可通过cmd命令:pip install pillow 进行安装。(注意:出现pip不是内部处理命令时需要配置一下环境)。
2.PIL库的功能
PIL库支持图像存储、显示和处理,它能够处理几乎所有的图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。
具体如下:
(1)图像归档:对图像进行批处理,生成图像预览图,图像格式转换等。
(2)图像处理:图像基本处理,像素、颜色处理等。
二、PIL库使用
3.PIL库Image类解析
(1)Image类的图像读取和创建方法:
Image.open(filename) 根据所给的参数进行加载图片的操作
Image.new(mode,size,color) 根据给定的参数创建一个新的图像
Image.open(StringIO.StringIo(buffer)) 从字符串中获取图像
Image.frombytes(mode,size,data) 根据像素点data创建图像
Image.verify() 对图像文件完整性进行检查,返回异常
通过Image打开图像文件时,图像的栅格数据不会直接被解码或者加载,程序只是读取了图像文件头部的元数据信息,这部分信息标识了图像的格式、颜色、大小等。
因此,打开一个文件会十分的迅速,与图像的存储和压缩方式无关。
加载一个图像文件的方法:
(2)Image类的常用属性
Image.dormat 标识图像格式或来源,如果图像不是从文件读取,值为None
Image.mode 图像的色彩模式,“L”为灰度图像,“RGB”为真彩色图像,“CMYK”为出版图像
Image.size 图像的宽度和高度,单位是像素(px),返回值是二元元组(tuple)
Image.palette 调色板属性,返回一个ImagePalette类型
查看已读取的图像文件属性:
打印结果为:
拓展:
CMYK色彩是彩色印刷时采用的一套色彩体系,也成印刷四色。印刷中颜色混合原理不一样,其中C是青色,M是红色,Y是黄色以及K是定位套版色(黑色)。
(3)Image类的序列图像操作方法
Image.seek(frame) 跳转并返回图像中的指定帧
Image.tell() 返回当前帧的序号
如:
(4)其他方法:
Image类的图像转换和保存方法:
Image.save(filename,format) 将图像保存为filename文件名,format是图片格式
Image.convert(mode) 使用不同的参数,转换图像为新的模式
Image.thumbnail(size) 创建图像的略缩图,size是略缩图尺寸的二元元组
Image类的图像旋转和缩放方法
Image.resize(size) 按size的大小调整图像,生成副本
Image.rotate(angle) 按angle的角度旋转图像,生成副本
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 插值后生成新图像
如交换图像中的颜色:
如对图像的每个像素点操作:
(5)拓展
PIL库的ImageFilter和ImageEnhance类提供了过滤图像和增强图像的方法
ImageFilter类的预定义过滤方法:
ImageFilter.BLUR 图像的模糊效果
ImageFilter.CONTOUR 图像的轮廓效果
ImageFilter.DETALE 图像的细节效果
ImageFilter.EDGE_ENHANCE 图像的边界加强效果
ImageFilter.EDGE_ENHANCE_MORE 图像的阈值边界加强效果
ImageFilter.EMBOSS 图像的浮雕效果
ImageFilter.FIND_EDGES 图像的边界效果
ImageFilter.SMOOTH 图像的平滑效果
ImageFilter.SMOOTH_MORE 图像的阈值平滑效果
ImageFilter.SHARPEN 图像的锐化效果
利用Image类的filter()方法可以使用ImageFilter类,方法如下:
Image.filter(ImageFilter.function) (注:function为BLUR、CONTOUR、DETALE等功能)
如获取图像轮廓:
ImageEnhance类的图像增强和滤镜方法:
ImageEnhance.enhance(factor) 对选择属性的数值增强factor倍
ImageEnhance.Color(im) 调整图像的颜色平衡
ImageEnhance.Contrast(im) 调整图像的对比度
ImageEnhance.Brightness(im) 调整图像的亮度
ImageEnhance.Sharpness(im) 调整图像的锐度
如增强图像的对比度为初始的20倍:
仅作为个人Python学习笔记