pillow 学习笔记(11.12.2017)

本文基于

  • PIL简明教程
  • Python图片裁剪(如: 头像裁剪)
  • pillow官方文档

PIL(Python Image Library)是Python进行图像处理最常用也是最基础的库之一。基本上已经算是半标准库了。但是原版PIL的开发者已经基本上放弃更新这个库了。致使这个库有很多issues亟待解决,同时也无法支持日益流行的python3。所以,现在这个库已经基本被它的一个分支pillow取代。

安装

对于Linux和Windows来说,最方便的安装方法就是pip了。

pip install pillow

要注意的是,pillow和PIL不可以同时存在。如果要使用Pillow库必须要先卸载原来的PIL库。

安装好之后,打开 Python 解释器,输入 from PIL import Image 来测试是否安装成功。

Image类

Image类的读取、显示与保存

像openCV中的Mat一样。研究pillow就必须先研究其图像类Image

from PIL import Image
im = Image.open("source.png")
im.show()

经典三部曲。引库,读取,显示。经测试,直接im-show("source.png")也可以直接显示。还可以用im.save('somewhere.png')保存。注意可以利用改变保存文件的后缀来实现格式转换。比如

 Image.open('in.jpg').save('out.png')

另外也可以从零创造一个新的空白图像。

im = Image.new(mode, size, color=0)

mode是RGB还是CMYK之类的选择。size`是一个二元元组。color``是背景色颜色,默认是黑色,也是用一个元组给出。

Image类的常用属性

#尺寸
w, h = im.size
#格式
print(im.format)
#或者
print(type(im))
#色彩模式
print(im.mode)

Image 类的 thumbnail() 方法

Image 类的 thumbnail() 方法可以制作缩略图。用法是在参数中输入一个二元列表或者元组,如im.thumbnail([200, 400])im.thumbnail((200, 400))都可以。这里要注意,这一个过程型的方法,作用的对象是im本身。这个函数没有返回值。
small_im = im.thumbnail([200, 400])是错误的。

Image类的crop(box)方法

crop()方法用于裁剪图像的一部分。它的参数是一个box元组,即(x, y, x+w, y+h), (x,y)是裁剪框左上角的坐标, (x+w, y+h)是右下角的坐标。如下图所示


坐标示意图
x = 100
y = 100
w = 200
h = 200
region = im.crop((x, y, x+w, y+h))
region.show()
region.save('region.jpg')

调用方法的对象是输入图像,方法的返回值即输出图像。

Image类的paste()方法

paste()是粘贴类。输入参数有两个。一个是待贴入的图像,另一个也是一个box元组标记位置。box元组同上一部分。而带贴入的图像是一个Image类对象。调用这个paste()的对象就是被贴图的基底图像。这个方法也是一个没有返回值的过程方法。

im.paste(region, (x+50, y+50, x+50+w, y+50+h))

Image类的transpose()方法

顾名思义,transpose()方法是用来实现图形变换的。可以在Image对象的后面以.transpose().transpose().transpose()的形式进行连续变换。输入参数是变换方法和参数,选取如下之一:

Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, 
Image.ROTATE_90, 
Image.ROTATE_180, 
Image.ROTATE_270 
Image.TRANSPOSE.

你可能感兴趣的:(pillow 学习笔记(11.12.2017))