Python 提供了 PIL(python image library)图像库,来满足开发者处理图像的功能,该库提供了广泛的文件格式支持,包括常见的 JPEG、PNG、GIF 等,它提供了图像创建、图像显示、图像处理等功能。
基本概念
要学习 PIL 图像库的使用,我们必须先来了解一些关于图像的基本概念,包括深度(depth),通道(bands),模式(mode),坐标系统(coordinate system)等。
图像的深度
图像中像素点占得 bit 位数,就是图像的深度,比如:
二值图像:图像的像素点不是0就是1 (图像不是黑色就是白色),图像像素点占的位数就是1位,图像的深度就是1,也称作位图。
灰度图像:图像的像素点位于0-255之间(0代表全黑,255代表全白,在0-255之间插入了255个等级的灰度)。2^8=255,图像像素点占的位数就是8位,图像的深度是8。
依次类推,我们把计算机中存储单个像素点所用的 bit 位称为图像的深度。
图像的通道
每张图像都是有一个或者多个数据通道构成的,如 RGB 是基本的三原色(红色、绿色和蓝色),如果我们用8位代表一种颜色,那么每种颜色的最大值是255,这样,每个像素点的颜色值范围就是(0-255, 0-255, 0-255)。这样的图像的通道就是3。而灰度图像的通道数是1。
图像的模式
图像实际上是像素数据的矩形图,图像的模式定义了图像中像素的类型和深度,每种类型代表不同的深度,在 PIL 中我们称之为图像的模式。常见的模式有以下几种:
1:1位像素,表示黑和白,占8 bit ,在图像表示中称为位图。
L:表示黑白之间的灰度,占8 bit 像素。
P:8位像素,使用调色版映射。
RGB:真彩色,占用 3x8 位像素,其中 R 为红色,G 为绿色,B为蓝色,三原色叠加形成的色彩变化,如三通道都为0则代表黑色,都为255则代表白色。
RGBA:为带透明蒙版的真彩色,其中的 A 为 alpha 透明度,占用 4x8 位像素
其他的还有 CMYK、 YCbCr、I、F等不常用的模式,这里就不多做介绍了。
图像的坐标系
P