Python:枕头(PIL 的一个分支)
Python Imaging Library(PIL 的扩展)是Python语言事实上的图像处理包。它结合了轻量级的图像处理工具,有助于编辑、创建和保存图像。对Python Imaging Library 的支持于 2011 年停止,但一个名为枕头的项目分叉了原始 PIL 项目并为其添加了 Python3.x 支持。 Pillow 被宣布为 PIL 的替代品,以备将来使用。 Pillow 支持大量的图像文件格式,包括 BMP、PNG、JPEG 和 TIFF。该库鼓励通过创建新的文件解码器来添加对库中更新格式的支持。
这个模块没有预装Python。因此,要安装它,请在命令行中执行以下命令:
pip install pillow
注意:一些 Linux 发行版倾向于预装Python和 PIL。
从枕头开始
1. 使用 open() 打开图像: PIL.Image.Image 类表示图像对象。此类提供用于打开图像的 open() 方法。
示例:假设图像是:
Python3
from PIL import Image
# test.png => location_of_image
img = Image.open(r"test.png")
Python3
from PIL import Image
img = Image.open(r"test.png")
img.show()
Python3
from PIL import Image
img = Image.open(r"test.png")
print(img.mode)
Python3
from PIL import Image
img = Image.open(r"test.png")
print(img.size)
Python3
from PIL import Image
img = Image.open(r"test.png")
print(img.format)
Python3
from PIL import Image
angle = 40
img = Image.open(r"test.png")
r_img = img.rotate(angle)
Python3
from PIL import Image
size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size)
r_img.show()
Python3
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)
注意:仅当图像与Python程序位于同一目录中时,图像的位置才应该是相对的,否则应提供图像的绝对(完整)路径。
2.使用show()显示图像:该方法用于显示图像。为了显示图像 Pillow 首先将图像转换为 .png 格式(在 Windows 操作系统上)并将其存储在临时缓冲区中,然后显示它。因此,由于将图像格式转换为 .png,原始图像文件格式的某些属性可能会丢失(如动画)。因此,建议仅将此方法用于测试目的。
Python3
from PIL import Image
img = Image.open(r"test.png")
img.show()
输出:
3.获取打开的图片信息
A)获取图像的模式(颜色模式):图像的模式属性告诉图像中像素的类型和深度。 1 位像素的范围为 0-1,8 位像素的范围为 0-255。该模块提供了不同的模式。其中很少有:Mode Description 1 1-bit pixels, black and white L 8-bit pixels, Greyscale P 8-bit pixels, mapped to any other mode using a color palette RGB 3×8-bit pixels, true color RGBA 4×8-bit pixels, true color with transparency mask
例子:
Python3
from PIL import Image
img = Image.open(r"test.png")
print(img.mode)
输出:
RGBA
注意:请参阅文档以了解这些模式。
B) 获取图像的大小:该属性提供图像的大小。它返回一个包含宽度和高度的元组。
例子:
Python3
from PIL import Image
img = Image.open(r"test.png")
print(img.size)
输出:
(180, 263)
C) 获取图片格式:该方法返回图片文件的格式。
Python3
from PIL import Image
img = Image.open(r"test.png")
print(img.format)
输出:
PNG
4. 使用 rotate() 旋转图像:旋转图像后,图像中没有像素值的部分用黑色填充(对于非 alpha 图像)和完全透明的像素(对于支持透明度的图像)
例子:
Python3
from PIL import Image
angle = 40
img = Image.open(r"test.png")
r_img = img.rotate(angle)
输出:
5. 使用 resize() 调整图像大小:在调整大小的过程中发生插值,因此无论是放大(调整到比原始更高的尺寸)还是缩小(调整到比原始更低的图像),图像的质量都会发生变化.因此 resize() 应该谨慎使用,同时为重采样参数提供合适的值。
例子:
Python3
from PIL import Image
size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size)
r_img.show()
输出:
6. 使用 save() 保存图像:使用 save() 方法时,Destination_path 还必须具有图像文件名和扩展名。如果在格式参数中指定了扩展名,则可以在 Destination_path 中省略扩展名。
Python3
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)