zoukankan      html  css  js  c++  java
  • python:PIL库学习笔记

    PIL库的概述:

    PIL库可以完成图像归档和图像处理两方面功能需求:
      图像归档:对图像进行批处理、生成图像预览、图像格式转换等;
      图像处理:图像基本处理、像素处理、颜色处理等。  

    PIL库Image类:

    from PIL import Image
    m = Image.open("D:\picture.jpg")   #读取照片文件

    生成缩略图:

    im.thumbnail((128, 128))    #(128,128)是缩略图的尺寸。
    im.save("birdnestTN","JPEG")
    im.show()   # 显示缩略图 (缩略图不能直接双击打开,而可以使用PIL.image的open读取,然后使用show()方法进行显示)

    旋转和缩放:

    im.rotate(45)    #Image.rotate(angle)    按angle角度旋转图像
    im.resize(128)   #Image.resize(size)    按size大小调整图像
    im.show()

    图像颜色交换

    r, g, b = im.split()   #提取RGB图像的每个颜色通道
    om = Image.merge("RGB", (b, g, r))   #将各独立通道再合成一幅新的图像
    om.save('pictureBGR.jpg')

    图像的过滤和增强

    图像轮廓获取:

    from PIL import Image
    from PIL import ImageFilter
    im = Image.open("picture.jpg")
    om = im.filter(ImageFilter.CONTOUR)
    om.save('pictureContour.jpg')

                                           

    调整色彩度、亮度、对比度、锐化

     浮雕化

    from PIL import Image
    from PIL import ImageFilter
    im = Image.open("picture.jpg")
    om = im.filter(ImageFilter.EMBOSS)
    om.save('picture1.jpg')

    提取动图每一帧

    from PIL import Image
    im = Image.open('动图.gif')      # 读入一个GIF文件
    try:
        im.save('picframe{:02d}.png'.format(im.tell()))
        while True:
            im.seek(im.tell()+1)
            im.save('picframe{:02d}.png'.format(im.tell()))
    except:
        print("处理结束")

     中文字符画

    from PIL import Image
    ascii_char  = list('中国真是个伟大的国家')
    def get_char(r, b, g, alpha=256):
        if alpha == 0:
            return ' '
        gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
        unit = 256 / len(ascii_char)
        return ascii_char[int(gray//unit)]
    def main():
        im = Image.open('pic.PNG')
        WIDTH, HEIGHT = 100, 60
        im = im.resize((WIDTH, HEIGHT))
        txt = ""
        for i in range(HEIGHT):
            for j in range(WIDTH):
                txt += get_char(*im.getpixel((j, i)))
            txt += '
    '
        fo = open("pic_char.txt","w")
        fo.write(txt)
        fo.close()
    main()

  • 相关阅读:
    java安全——BASE64
    Spring Aop 梳理
    Spring Aop中,获取被代理类的工具
    关于eclipse运行TestNG出现: CreateProcess error=206, ÎļþÃû»ò)չÃû的解决办法
    java内存设置
    用python开发调试器——起始篇
    5分钟破解全峰快递
    重拾黑客
    ThreadPoolExecutor的运转机制
    20190627_解决ADB的device offline问题的两种方法
  • 原文地址:https://www.cnblogs.com/linjiaxin59/p/12695287.html
Copyright © 2011-2022 走看看