python PIL模块笔记

Introduction

PIL是python一个图像处理库,主要功能有:缩略图,转换图像格式,打印图像,图像展示,图像处理。
PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

用法

首先是Image类:核心类
from PIL import Image

创建图像对象

Image.new(mode,size)
im = Image.new("RGBA",(100,200))
Image.open(filename,mode)
im.open("test.png","r")
一些属性:size,mode,format
print(im.size,im.mode,im.format)
展示图片im.show()

保存图片

Image.save(filename,format)
im.save("test2.png",'png')

创建缩略图

None Image.thumbnail(size,resample)
注意!这个是原地操作
im.thumbnail((50,50),resample=Image.BICUBIC)

裁剪区域

crop(box)

box = (10,10,100,100)
region = im.crop(box)
region.show()

图片旋转或翻转 Image.transpose(method)

nim = im.transpose(Image.ROTATE_180)
- Image.FLIP_LEFT_RIGHT,左右翻转
- Image.FLIP_TOP_BOTTOM,上下翻转
- Image.ROTATE_90,逆时针旋转90°
- Image.ROTATE_180,逆时针旋转180°
- Image.ROTATE_270,逆时针旋转270°
- Image.TRANSPOSE,转置(相当于顺时针旋转90°)
- Image.TRANSVERSE,转置,再水平翻转

粘贴

paste(region,box,mask)
im.paste(region,(20,20),None)

颜色通道分离

Image.split()

r,g,b = im.split()
r.show()
g.show()
b.show()

颜色通道合并

static Image.merge(mode,channels)
nim = Image.merge("RGB",[b,r,g])

获取像素点

im = Image.open('image.gif')
rgb_im = im.convert('RGB')
r, g, b = rgb_im.getpixel((1, 1))

print(r, g, b)
(65, 100, 137)

转换大小

Image.resize(size,resample,box)

nim = im.resize((50,50))
mim = im.resize(50,50,box=(10,10,90,90))

改变模式

Image.convert(mode,matrix,dither,palette,colors)
mode,一般是'RGB'(真彩图)、'L'(灰度图)、'CMYK'(压缩图)

过滤器

Image.filter(filter)
from PIL import ImageFilter
在PIL.ImageFilter函数中定义了大量内置的filter函数,比如BLUR(模糊操作),GaussianBlur(高斯模糊),MedianFilter(中值过滤器),FIND_EDGES(查找边)等。

nim = im.filter(ImageFilter.BLUR)
mim = im.filter(ImageFilter.FIND_EDGES)

对图像的像素操作

Image.point(lut,mod)
第一个参数传入一个函数或lambda表达式。
比如:把所有像素放大1.5倍

nim = im.point(lambda x:x*1.5)
nim.save("nim.png","png")

获取gif序列

gif = Image.open("samp.gif")

for i,frame in enumerate(ImageSequence.Iterator(gif),1):
    if frame.mode == "JPEG":
        frame.save("%d.jpg"%i)
    else:
        frame.save("%d.png"%i)

你可能感兴趣的:(python PIL模块笔记)