Python: Pillow (a fork of PIL)

Python: Pillow (a fork of PIL)

Python Imaging Library(PIL的扩展)是Python语言中事实上的图像处理包。它包含了轻量级的图像处理工具,有助于编辑、创建和保存图像。对Python Imaging Library的支持在2011年停止了,但一个名为pillow的项目分叉了最初的PIL项目,并为其添加了Python3.x的支持。Pillow被宣布为PIL的替代品,供未来使用。Pillow支持大量的图像文件格式,包括BMP、PNG、JPEG和TIFF。该库鼓励通过创建新的文件解码器在库中增加对较新格式的支持。
这个模块没有预装在Python中。所以要安装它,在命令行中执行以下命令。

pip install pillow

注意:几个Linux发行版往往都预装了Python和PIL。

从Pillow开始

1.使用open()打开一个图像:PIL.Image.Image类代表了图像对象。这个类提供了open()方法,用来打开图像。

例子:我们假设图像是。

Python Pillow

from PIL import Image
 
 
# test.png => location_of_image
img = Image.open(r"test.png")  

注意:只有当图像与Python程序在同一目录下时,图像的位置才应该是相对的,否则应该提供图像的绝对(完整)路径。

2.使用show()显示图像:该方法用于显示图像。为了显示图像,Pillow首先将图像转换为.png格式(在Windows操作系统上),并将其存储在一个临时缓冲区中,然后再显示。因此,由于将图像格式转换为.png,原始图像文件格式的一些属性可能会丢失(如动画)。因此,建议只为测试目的使用这种方法。

from PIL import Image
 
 
img = Image.open(r"test.png")
img.show()

输出:

Python Pillow

3.获得关于已打开图像的信息

A) 获取图像的模式(颜色模式):图像的模式属性告诉了图像中像素的类型和深度。一个1位像素的范围是0-1,一个8位像素的范围是0-255。这个模块提供了不同的模式。其中一些是

模式 说明
1 1位像素,黑与白
L 8位像素,灰度
P 8位像素,使用调色板映射到任何其他模式
RGB 3×8位像素,真彩色
RGBA 4×8位像素,带透明掩码的真彩色

示例:

from PIL import Image
 
 
img = Image.open(r"test.png")
print(img.mode)

输出:

RGBA

注意:请参考文件以了解这些模式。

B) 获取图像的大小:该属性提供了图像的大小。它返回一个包含宽度和高度的元组。

示例:

from PIL import Image
 
 
img = Image.open(r"test.png")
print(img.size)

输出:

(180, 263)

C) 获取图像的格式:该方法返回图像文件的格式。

from PIL import Image
 
 
img = Image.open(r"test.png")
print(img.format)

输出:

PNG

4.使用rotate()旋转图像:旋转图像后,图像中没有像素值的部分被填充为黑色(对于非阿尔法图像)和完全透明的像素(对于支持透明的图像)。

示例:

from PIL import Image
 
 
angle = 40
img = Image.open(r"test.png")
r_img = img.rotate(angle)

输出:

Python Pillow

5.使用resize()调整图像大小:在调整过程中会发生插值,由于插值的原因,无论图像是被上调(调整到比原来高的尺寸)还是下调(调整到比原来低的图像),其质量都会发生变化。因此,resize()应该被谨慎使用,并为重采样参数提供合适的值。

示例:

from PIL import Image
 
 
size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size)
 
r_img.show()

输出:

Python Pillow

6.使用save()保存图像:当使用save()方法时,Destination_path必须有图像的文件名和扩展名。如果扩展名在格式参数中被指定,扩展名可以在Destination_path中省略。

from PIL import Image
 
 
size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size, resample = Image.BILINEAR)
 
# resized_test.png => Destination_path
r_img.save("resized_test.png")
 
# Opening the new image
img = Image.open(r"resized_test.png")
print(img.size)

输出:

(40, 40)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程