zoukankan      html  css  js  c++  java
  • python之PIL库(Image模块)

    PIL(Python Image Library)是python的第三方图像处理库,PIL的功能非常的强大,几乎被认定是Python的官方图像处理库了。

    由于PIL仅支持到python2.7于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新的python3,而且扩容了很多特性,所以在python3我们可以直接安装Pillow。

    我们可以去官网查看它的资料:http://effbot.org/

    它可以做的事情:

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

    官网中PIL的模块:

    这里主要介绍基本的Image模块

    Image模块                                    

    Image模块是PIL库基本的核心类,该模块提供了很多工厂功能,比如加载图像和创建新图像。以下介绍它的一些基本用法

    open(filename,mode):打开一张图像

    from PIL import Image
    
    img = Image.open(r'D:workspacepachongceshi	img.jpg', 'r')
    print(img,type(img))

    可以看到:

    # 获得图像的高和宽
    h, w = img.size
    # 获得图像的格式
    geshi = img.format
    # 获得图像的模式
    mo = img.mode
    # 将文件重新保存为time.png
    img.save('time', 'png')
    # 创建缩略图
    img.thumbnail((50,50),resample=Image.BICUBIC)
    img.show()
    # 保存与图像数据相关的字典
    dic = img.info
    # 验证文件是否损坏,如果损坏回报异常
    img.verify()
    # 翻转图像
    new_img = img.transpose(Image.FLIP_LEFT_RIGHT)
    new_img.show()

    可以是下面几种方法:FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180或 ROTATE_270。

    # 显示图像
    new_img.show()
    # 两张图片混合,两个图像必须具有相同的大小和模式
    Image.blend(image1,image2,alpha) ⇒图像
    # 如果alpha为0.0,则返回第一个图像的副本。如果alpha为1.0,则返回第二个图像的副本。alpha值没有限制。
    如有必要,剪切结果以适应允许的输出范围。
    Image.eval(图像,功能) ⇒图像
    # 将函数(应该采用一个参数)应用于给定图像中的每个像素
    # 色素分离
    r, g, b = img.split()
    r.show()
    g.show()
    b.show()
    # 旋转图像90度
    img1 = img.rotate(90)
    img1.show()
    # 调整大小
    img1 = img.resize((100, 100))
    img1.show()
    # 将一张图像粘贴到指定位置
    im.paste(图像,方框)
    # 调为映像分配存储并从文件(或从源,从延迟操作)加载它
    pix  = img.load
    print(pix)
    # 返回图像的直方图
    img_lst = img.histogram()
    im.copy() ⇒图像
    #复制图像。如果您希望将内容粘贴到图像中,但仍保留原始图像,请使用此方法。

    先简单总结到这里,Image模块单独使用率是比较低的,以后再总结PIL的其他模块。

  • 相关阅读:
    SQLServer多表连接查询
    SQLServer基本查询
    SQLServer索引
    SQLServer之数据类型
    设计模式小结
    SQL跨项目查询语法
    利用CountDownLatch和Semaphore测试案例
    JUC包下Semaphore学习笔记
    JUC包下CountDownLatch学习笔记
    JUC包下CyclicBarrier学习笔记
  • 原文地址:https://www.cnblogs.com/xiaozx/p/10698852.html
Copyright © 2011-2022 走看看