📜  Python|使用枕头中的图像数据类型(1)

📅  最后修改于: 2023-12-03 15:19:18.183000             🧑  作者: Mango

Python | 使用枕头中的图像数据类型

简介

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 表示旋转角度,可以是正数或是负数;resampleexpand 与上文相同。

from PIL import Image

# 打开图像
im = Image.open("picture2.png")

# 旋转图像
im = im.rotate(45)

# 保存图像
im.save("picture2_rotate.png")

以上代码将打开“picture2.png”,将它旋转 45 度,保存在当前目录下。

总结

Pillow 提供了一些图像操作方法和多种图像数据类型,可以方便地进行图像处理和转换。本文介绍了如何创建图像、打开图像、获取图像信息、转换图像数据类型、改变图像尺寸、剪裁图像和旋转图像,希望对大家有所帮助。