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) # 将数组转换为图片
相关文档: