PIL库的使用

PIL库的概述

PIL库是一个具有强大图像处理能力的第三方库,不仅包含了丰富的像素,色彩操作功能,还可以用于图像归档和批量处理

库名:pillow

下载方式:IDLE通过cmd 输入>pip install pillow;pycharm——>File——>setting——>project,Pythonproject点击加号,找到pillow下载

PIL库支持图像存储、显示和处理,它能够处理几乎所有的图片格式,可以完成图像的缩放剪裁叠加、以及向图像添加线条,图像和文字等操作

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

  • 图像归档:对图像进行批处理、生成图像预览、图像格式转换等
  • 图像处理:图像基本处理、像素处理、颜色处理等

PIL库包括21个与图片有关的类

Image

ImageChops

ImageColor

ImageCrackCode

ImageDraw

ImageEnhance

ImageFile

ImageFileI()

ImageFilter

ImageFont

ImageGL

ImageGrab

Imagemath

ImageOps

ImagePalette

ImagePath

ImageQt

ImageSequence

ImageStat

ImageTk

ImageWin

PIL库Image类解析

Image类的图像读取和创建方法

方法

描述

Image.open(filename)

根据参数加载图像文件

Image.new(mode, size, color)

根据给定·参数创建一个新的图像

Image.open(StringIO.StringIO(buffer))

从字符串中获取图像

Image.frombytes(mode, size, data)

根据像素点data创建图像

Image.verify()

对图像文件完整性进行检查,返回异常

实例:

from PIL import Image
im = Image.open("D:\\LOL.jpg")

要求在D盘中先有一个名为LOL.jpg名字的文件

Image类的常用属性

属性

描述

Image.format

标识图像格式或来源,如果图像不是从文件读取,值为None

Image.mode

图像的色彩模式,“L"为灰色图像”RGB“为真彩色图像,”CMYK“为出版图像

Image.size

图像宽度和高度,单位为像素(px),返回值是二元元组(tuple)

Image.palette

调色板属性,返回一个ImagePalette类型

实例:

from PIL import Image
im = Image.open("D:\\LOL.jpg")
print(im.format, im.size, im.mode)
=======================================================================================
JPEG (1280, 768) RGB

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

Image类的·序列图像操作方法

方法

描述

Image.seek(frame)

跳转并返回图像中的指定帧

Image.tell()

返回当前帧的序号

实例

from PIL import Image
im = Image.open('D:\\Loading.gif')
try:
    im.save('D:\\picframe{:02d}.png'.format(im.tell()))

    while True:
        im.seek(im.tell()+1)
        im.save('D:\\picframe{:02d}.png'.format(im.tell()))
except:
    print("处理结束")

结果:

python中plup库 python中的pil库_python中plup库

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

方法

描述

Image.save(filename, format)

将图像保存为filename文件名,format是图片格式

Image.convert(mode)

使用不同的参数,转换图像为新的模式

Image.thumbnail(size)

创建图像的缩略图,size是缩略尺寸的二元元组

from PIL import Image
im = Image.open("D:\\LOL.jpg")
im.save("D:LOL.gif")
im.thumbnail((128,128))
im.save("D:\\LOL","JPEG")

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

from PIL import Image
im = Image.open("D:\\LOL.jpg")
r,g,b = im.split()
om = Image.merge("RGB",(b,g,r))
om.save("D:\\LOLchangecolor.jpg")

结果

python中plup库 python中的pil库_python中plup库_02

python中plup库 python中的pil库_python中plup库_03

图像的过滤和增强

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

ImageFilter类的预定义过滤方法

方法表示

描述

ImageFilter.BLUR

图像的模糊效果

ImageFilter.CONTOUR

图像的轮廓效果

ImageFilter.DETAIL

图像的细节效果

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.fuction)

实例

from PIL import Image
from PIL import ImageFilter
im = Image.open("D:\\LOL.jpg")
om = im.filter(ImageFilter.CONTOUR)
om.save("D:\\LOLContour.jpg")

python中plup库 python中的pil库_图像处理_04

ImageEnhance类的图像增强和滤镜方法

方法

描述

ImageEnhance.enhance(factor)

对选择属性对的数值增强factor倍

ImageEnhance.Color(im)

调整图像的颜色平衡

ImageEnhance.Contrast(im)

调整图像的对比值

ImageEnhance.Brightness(im)

调整图像的亮度

ImageEnhance.Sharpness(im)

调整图像的锐度

增强图像的对比值为初始值的20倍

from PIL import Image
from PIL import ImageEnhance
im = Image.open("D:\\LOL.jpg")
om = ImageEnhance.Contrast(im)
om.enhance(20).save("D:\\LOL20.jpg")

python中plup库 python中的pil库_Image_05

CMYK色彩

CMYK色彩是彩色印刷时采用的一套色彩体系,也称印刷四色。CMYK利用色彩的三原色的黑色墨油混合叠加,形成各种色彩。