zoukankan      html  css  js  c++  java
  • python PIL库的使用

    1PIL可以做很多和图像处理相关的事情:

    • 图像归档(Image Archives)PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
    • 图像展示(Image Display)PIL较新的版本支持包括Tk PhotoImageBitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
    • 图像处理(Image Processing)PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

    2PILImage类介绍

    Image类中的函数

    1. openfilename : 根据参数加载图像文件。建议采用文件的全路径,如下面的文件位于d盘中

    from PIL import Image

    im=Image.open("D:\十二星座.png")

    2. newmode,size,color: 这个函数创建一幅给定模式(mode)和尺寸(size)的图片,如果省略color参数,则创建的图片被黑色填充满,如果 color 参数是 None 值,则图片还没初始化。

    3. openStringIO.StringIO(buffer): 从字符串中获取图像。

    4.frombytesmodesizedata):根据像素点(data)创建图像

    5.verify :对图像文件完整性进行检查,返回异常。

     

    Image类的常用属性

    1.format:识别图像格式或来源,如果图像不是从文件中读取,值为none

    2.mode:图像的色彩模式,'L'为灰色图像,'RGB'为真彩色图像,"CMYk"为出版图像。

    3.size:图像宽度和高度,单位是像素,返回值为二元元组。

    4.palette:调色板属性,返回一个ImagePalette类型

    查看已读取的图像文件的属性如下:

    print(im.format,im.size,im.mode)

    JPEG (900,598),RGB

     

    Image类的方法

    1.seek(frame): 跳转并返回图像中的指定帧

    2.tell():返回当前帧的序号

    3.savefilenameformat):将图像保存为filename文件名,format是图片格式

    4.convertmode):使用不同的参数,转换图像为新的模式

    5.thumbnailsize):创建图像的缩略图,size是缩略图尺寸的二元元祖

    6.resizesize):按size大小调整图像,生成副本。

    7.rotateangle):按angle角度旋转角度,生成副本。

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

    9.split(): 提取RGB图像的每个颜色通道,返回图像副本、

    10.mergemodebands):合并通道,其中mode表示色彩,bands表示新的色彩通道。

    11.blendim1im2alpha: 将两幅图片im1im2按照如下公式插值后生成新的图im3im1*1.0-alpha+im2*alpha

    我做的一个实例:

    from PIL import Image

    from PIL import ImageFilter

    from PIL import ImageEnhance

    im=Image.open("d:\十二星座.png")

    om=im.filter(ImageFilter.CONTOUR)

    om=ImageEnhance.Contrast(im)

    om.enhance(120).save("d:\十二星座.png")

    一开始的图片是

    使用Image类后

     

    2.对一张图片生成缩略图

    from PIL import Image

    from PIL import ImageFilter

    from PIL import ImageEnhance

    im=Image.open("d:\猴猴厚.png")

    im.thumbnail((128,128))

    im.save("d:\猴猴厚.png","png")

    两张图做对比:

     

     

     

     

     

     

  • 相关阅读:
    关于快速幂算法有效性的证明
    二进制在算法编写中的常用概念
    C++ P3379 【模板】最近公共祖先(LCA)
    关于二分图染色的几点总结
    快速打出System.out.println("");
    try{}catch(){}//根据异常信息使用不同的方法要怎么实现
    Iterator<Entry<String,String>> iter=map.entrySet().iterator(); 是什么意思
    java_Collection 类集
    instanceof的用法②
    instanceof的用法①
  • 原文地址:https://www.cnblogs.com/panqiaoyan/p/10665068.html
Copyright © 2011-2022 走看看