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 += '\n'
    fo = open("pic_char.txt","w")
    fo.write(txt)
    fo.close()
main()

 

posted @ 2020-04-14 00:39  Jessie-  阅读(1408)  评论(0编辑  收藏  举报