📅  最后修改于: 2023-12-03 15:19:18.183000             🧑  作者: Mango
Pillow 是一个 Python 图像处理库,它在 Python Imaging Library (PIL) 基础上进行开发,具有更好的性能和一些额外的功能。Pillow 提供了一些图像操作方法,包括图像打开、裁剪、缩放、旋转、颜色空间转换等。同时,Pillow 还支持多种图像格式,包括 BMP、GIF、JPEG、PNG 等。
在 Pillow 中,可以使用不同的图像数据(Image Mode)类型来表示不同的图像,例如 “1” 表示黑白图像、 “RGB” 表示彩色图像、 “RGBA” 表示带有透明度的彩色图像等。在本文中,我们将介绍如何使用 Pillow 中的不同图像数据类型。
第一步是创建一个空白的图像,可以使用 Image.new(mode, size, color)
方法。mode
表示图像数据类型,size
表示图像的大小,color
表示图像的默认颜色。
from PIL import Image
# 创建一个黑白图像
im = Image.new("1", (100, 100), color="white")
im.save("picture1.png")
# 创建一个红色的 RGB 图像
im = Image.new("RGB", (100, 100), color="red")
im.save("picture2.png")
# 创建一个带有透明度的 RGBA 图像
im = Image.new("RGBA", (100, 100), color="white")
im.putalpha(128) # 将图像透明度设置为 128
im.save("picture3.png")
以上代码将创建三个不同的图像,分别是黑白图像、红色的 RGB 图像、带有透明度的 RGBA 图像,保存在当前目录下。
要打开一张图像,可以使用 Image.open(filename)
方法。filename
表示图像的路径。
from PIL import Image
# 打开图像
im = Image.open("picture2.png")
# 显示图像
im.show()
以上代码将打开当前目录中的“picture2.png”图像,并显示在屏幕上。
可以使用图像对象的一些属性来获取图像的信息,例如大小(width 和 height)、格式(format)、数据类型(mode)等。
from PIL import Image
# 打开图像
im = Image.open("picture2.png")
# 获取图像信息
width, height = im.size
format = im.format
mode = im.mode
print(f"Size: {width} x {height}")
print(f"Format: {format}")
print(f"Mode: {mode}")
以上代码将打开“picture2.png”图像,并输出它的大小、格式和数据类型。
有时候需要将一个图像从一种数据类型转换到另一种数据类型,例如从黑白图像转换为 RGB 图像、或是从 RGBA 图像转换为 RGB 图像等。可以使用图像对象的 convert(mode)
方法来实现。
from PIL import Image
# 打开图像
im = Image.open("picture1.png")
# 转换为 RGB 图像
im = im.convert("RGB")
# 保存图像
im.save("picture1_rgb.png")
以上代码将打开“picture1.png”,并将它转换为 RGB 图像,保存在当前目录下。
可以使用 Image.resize(size, resample=None)
方法来改变图像的尺寸。size
表示目标尺寸,可以是元组(width, height)或是一个整数表示缩放比例;resample
表示采样方法,可以是 Image.NEAREST
(最近邻采样)、Image.BOX
(盒状采样)、Image.BILINEAR
(双线性采样)等。
from PIL import Image
# 打开图像
im = Image.open("picture2.png")
# 缩小 50%
im = im.resize((50, 50))
# 保存图像
im.save("picture2_small.png")
以上代码将打开“picture2.png”,将它缩小 50%,保存在当前目录下。
可以使用 Image.crop(box=None)
方法来剪裁图像。box
表示要剪裁的区域,可以是元组(left, upper, right, lower)或是一个矩形对象。
from PIL import Image
# 打开图像
im = Image.open("picture2.png")
# 剪裁图像
im = im.crop((25, 25, 75, 75))
# 保存图像
im.save("picture2_crop.png")
以上代码将打开“picture2.png”,将它的中心部分剪裁出来,保存在当前目录下。
可以使用 Image.rotate(angle, resample=None, expand=False)
方法来旋转图像。angle
表示旋转角度,可以是正数或是负数;resample
和 expand
与上文相同。
from PIL import Image
# 打开图像
im = Image.open("picture2.png")
# 旋转图像
im = im.rotate(45)
# 保存图像
im.save("picture2_rotate.png")
以上代码将打开“picture2.png”,将它旋转 45 度,保存在当前目录下。
Pillow 提供了一些图像操作方法和多种图像数据类型,可以方便地进行图像处理和转换。本文介绍了如何创建图像、打开图像、获取图像信息、转换图像数据类型、改变图像尺寸、剪裁图像和旋转图像,希望对大家有所帮助。