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学习笔记