持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
Pillow
Pillow 是 PIL 的一个友好的分支(PIL 是 Python Imaging Library 的缩写)
安装 Pillow
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
基本使用
使用 Image 类
from PIL import Image
读取图片
image.open([图片名称]):读取图片
- 类似文件的对象:
with open("hopper.ppm", "rb") as fp: im = Image.open(fp) - 二进制流:
image = Image.open(io.BytesIO(buffer))import io
- 从 tar 文档读取:
image = Image.open(TarIO.TarIO("Tests/images/hopper.tar", "hopper.jpg"))from PIL import Image, TarIO
基本属性
image.format:图片的来源,如果图片不是从文件读取,则为 None
image.size:包含宽度和高度的二元组(以像素为单位)
image.mode:定义图片中条带的数量和名称,包括像素类型和深度
L(luminance):灰度图像RGB:真彩图像CMYK:印前图像
裁剪图片
crop():从图片中提取子区域
例子
box = (100, 100, 400, 400)
region = image.crop(box)
区域由 4 元组定义,其坐标是(左、上、右、下)。Python Imaging Library 使用左上角为 (0,0) 的坐标系。还要注意,坐标指的是像素之间的位置,因此上面示例中的区域正好是 300x300 像素
调整图片大小
out = image.resize((128, 128))
旋转图片
transpose():既可以旋转图像,也可以围绕图像的水平轴或垂直轴翻转图像region = region.transpose(Image.Transpose.ROTATE_180)region = region.transpose(Image.Transpose.FLIP_LEFT_RIGHT)region = region.transpose(Image.Transpose.FLIP_TOP_BOTTOM)region = region.transpose(Image.Transpose.ROTATE_90)region = region.transpose(Image.Transpose.ROTATE_180)region = region.transpose(Image.Transpose.ROTATE_270)
rotate():取逆时针方向的角度(度),要以 90 度的步长旋转图像out = image.rotate(45)
粘贴图片
box = (100, 100, 400, 400)
image.paste(region, box)
将 region 粘贴在 image 指定的区域 box
拆分和合并颜色通道
r, g, b = image.split()
im = Image.merge("RGB", (b, g, r))
对于单波段图像,返回图像本身
要使用各个色带,可能需要先将图像转换为“RGB”
加载图片
image.show():加载图片
保存图片
image.save([图片路径]):保存图片
im.save([图片路径],"[JPEG]"):第二个参数显式指定文件格式,如果使用非标准扩展名,则必须始终以以下方式指定格式