1、Pillow(PIL)的安装
1)Python 2.7
pip install PIL
2)Python 3
pip install pillow
注意:Pillow是PIL的兼容版本,PIL 仅支持到 Python 2.7,Python 3中使用的是Pillow。
2、Image类使用
1)对象属性
import PIL.Image im = PIL.Image.open(r"D:\cjavapy.jpg") print(im.size) # 查看图片大小 print(im.readonly) # 查看是否为只读,1为是,0为否 print(im.format) # 查看图片的格式 print(im.info) # 查看图片的相关信息 print(im.mode) # 查看图片的模式
2)读取图像
from PIL import Image #读取本地图片 img = Image.open(r"./cjavapy.jpg") #通过url读取图片 url ='https://example.com/cjavapy.jpg' resp = requests.get(url, stream=True).raw img =Image.open(resp) #保存图片 img.save('cjavapy.jpg','jpeg')
save()参数如下:
fp:图片的存储路径,包含图片的名称,字符串格式。
format:可选参数,可以指定图片的格式。
3)图片操作
from PIL import Image #读取本地图片 img = Image.open(r"./cjavapy.jpg") """convert()参数: mode:指的是要转换成的图像模式 params:其他可选参数""" #convert() 方法可以实现图像模式的转换 img_convert = img.convert("RGBA") #获取图片大小 print(img.size) #图片缩放,缩放为原来的1/2 img = img.resize((im.size[0] // 2, im.size[1] // 2)) #图像翻转,按照逆时针进行翻转 img = img.rotate(90) #创建缩略图 """thumbnail()参数: size:元组参数,指的是缩小后的图像大小 resample:可选参数,指图像重采样滤波器,有四种过滤方式,分别是 Image.BICUBIC(双立方插值法)、PIL.Image.NEAREST(最近邻插值法)、PIL.Image.BILINEAR(双线性插值法)、PIL.Image.LANCZOS(下采样过滤插值法),默认为 Image.BICUBIC """ img = img.thumbnail(size,resample)
img.convert("RGBA")中mode参数:
mode | 描述 |
1 | 1 位像素(取值范围 0-1),0表示黑,1 表示白,单色通道。 |
L | 8 位像素(取值范围 0 -255),灰度图,单色通道。 |
P | 8 位像素,使用调色板映射到任何其他模式,单色通道。 |
RGB | 3 x 8位像素,真彩色,三色通道,每个通道的取值范围 0-255。 |
RGBA | 4 x 8位像素,真彩色+透明通道,四色通道。 |
CMYK | 4 x 8位像素,四色通道,可以适应于打印图片。 |
YCbCr | 3 x 8位像素,彩色视频格式,三色通道。 |
LAB | 3 x 8位像素,L * a * b颜色空间,三色通道 |
HSV | 3 x 8位像素,色相,饱和度,值颜色空间,三色通道。 |
I | 32 位有符号整数像素,单色通道。 |
F | 32 位浮点像素,单色通道。 |
3、 Image与Numpy转换
Image与Numpy可以互相转换,可以将图像转Numpy,也可以通过Numpy数据加载图片。
如下,
from PIL import Image import numpy as np img = PIL.Image.open(r"D:\cjavapy.jpg") print(np.asarray(img)) # 三维数组 na = np.asarray(img) # 将图片转换为数组 na[0][0][0] = 0 # 修改数组的值 im_new = Image.fromarray(na) # 将数组转换为图片
相关文档: