Python Pillow(PIL)安装及Image 类的使用

Pillow(PIL)是Python平台事实上的图像处理标准库,支持多种格式,并提供强大的图形与图像处理功能。PIL 模块全称为 Python Imaging Library,是Python中一个免费的图像处理模块。PIL 仅支持到 Python 2.7。Python3用的是PIL的兼容版本Pillow。本文主要介绍Python Pillow(PIL)安装及Image 类的使用。

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)  # 将数组转换为图片

相关文档:

Python Pillow(PIL) 图像处理(分离、合并、裁剪、几何变换)

Python Pillow(PIL) ImageFilter和ImageColor的使用

推荐阅读
cjavapy编程之路首页