• 玩转PIL库


    1.安装pillow库:

    在cmd下,输入简单的命令: pip install pillow  即可安装pillow库。

    2.PIL库的简介:

      1. PIL库主要有2个方面的功能:

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

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

      2. PIL拥有多个类,此处就其中的Image类、ImageFilter类、ImageEnhance类做简单介绍。

    3.使用库函数Image类 —— 基本图像处理

    1. 调用Image类

      调用方法:from PIL import Image

    2. Image类关于图像读取与创建

      

    Image.open(filename)

    加载图像文件

    Image.new(mode,size,color)

    根据给定参数创建新图像

    Image.open(StringIO.StringIO(buffer))

    从字符串中获取图像

    Image.frombytes(mode,size,color)

    根据像素点创建新图像

    Image.verify()

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

    3. Image类的常用属性

    方法

    说明

    Image.format

    图像格式或来源,若图像不是从文件读取,返回None

    Image.mode

    图像的色彩模式,’L’为灰度模式,’RGB’为真彩色图像,’C(青)M(品红)Y(黄)K(黑)’为出版图像

    Image.size

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

    Image.palette

    调色板属性,返回ImagePalette类型

    4.Image类的序列图像操作方法

    方法

    说明

    Image.seek(frame)

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

    Image.tell()

    返回当前帧的序号

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

    方法

    说明

    Image.resize(size)

    返回按size大小调整图像的副本

    Image.rotate(angle)

    返回按angle角度旋转图像的副本

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

    方法

    说明

    Image.save(filename,format)

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

    Image.convert(mode)

    将图像转换为mode模式

    Image.thumbnail(size)

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

    代码如下:

    复制代码
    # -*- encoding:utf-8 -*-
    ''' 改变颜色 --- 颜色反转'''
    from PIL import Image
    nest = Image.open("D:\靓女.jpeg")
    r,g,b = nest.split()           #获取原图的RGB通道的颜色值
    newb = b.point(lambda i:i*1.1) #将B通道的颜色值增强
    nest1 = Image.merge(nest.mode,(b,g,r))
    nest1.thumbnail((400,254))     #创建缩略图
    nest1.save("D:\小狗.jpeg")
    复制代码

    效果如下显示:

    原图:

    效果图:

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

    方法

    说明

    Image.point(func)

    根据函数func的功能对每个元素进行运算,返回图像副本

    Image.split()

    根据GRB图像的每个颜色通道,返回图像副本

    Image.merge(mode,bands)

    合成通道,其中mode为色彩,bands为新的色彩通道

    Image.blend(im1,im2,alpha)

    将2张图片im1和im2按照公式插值后生成新图像

    公式:im1*(1.0 - alpha) + im2*alpha

    四、使用库函数ImageFilter类 —— 图像过滤

      1.调用ImageFilter类:

          from PIL import ImageFilter

      2. 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

    图像的锐化效果

    继续用例子说明:代码如下:

    复制代码
    # -*- encoding:utf-8 -*-
    ''' 轮廓效果 --- 素描 '''
    from PIL import Image
    from PIL import ImageFilter
    square = Image.open("D:\广师.jpg")
    square1 = square.filter(ImageFilter.CONTOUR)  #选择轮廓效果
    square1.save("D:\广师.jpg")
    复制代码

    原图片:

    效果图片:

    五、使用库函数ImageEnhance类 —— 图像增强

      2.ImageEnhance类图像增强与滤镜方法

    方法

    说明

    ImageEnhance.enhance(factor)

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

    ImageEnhance.Color(im)

    调整图像的颜色平衡

    ImageEnhance.Contrast(im)

    调整图像的对比度

    ImageEnhance.Brightness(im)

    调整图像的亮度

    ImageEnhance.Sharpness(im)

    调整图像的锐度

    例子三:代码如下:

    复制代码
    # -*- encoding:utf-8 -*-
    ''' 亮度增强 --- 曝光 '''
    from PIL import Image
    from PIL import ImageEnhance
    gz = Image.open("D:\gz.jpg")
    gz1 = ImageEnhance.Brightness(gz)     #选择亮度
    gz1.enhance(2).save("D:\gz1.jpg")    #将亮度增强2倍后保存
    复制代码
     

    原图

    效果图:

    例子4:gif图片

    代码如下:

    复制代码
    # -*- encoding:utf-8 -*-
    ''' 制作GIF图 '''
    import imageio
    savename = "D:\my.gif"
    #准备制作的图像名称
    filenames = ["D:\72.png","D:\33.png","D:\55.png","D:\菜3.png","D:\蔡徐坤2.png","D:\表情.jpg","D:\小狗.jpg"]
    frames = []
    for name in filenames:
        frames.append(imageio.imread(name))
    imageio.mimsave(savename,frames,'GIF',duration=1)
    复制代码

    gif图如下:

  • 相关阅读:
    Laravel 禁用指定 URL POST 请求的 csrf 检查
    laravel console
    python之面向对象(一)
    python中os.popen, os.system()区别
    Day6作业:计算器
    Day5作业,商城+ATM机+后台管理
    python基础之反射
    python基础之坑爹正则表达式
    python基础之模块(一)
    python 中的一些基础算法:递归/冒泡/选择/插入
  • 原文地址:https://www.cnblogs.com/wangxinyu520/p/10687596.html
Copyright © 2020-2023  润新知