关于python:用Pillow处理图像Python中的实践指南

64次阅读

共计 2523 个字符,预计需要花费 7 分钟才能阅读完成。

一、引言

Pillow,是 Python Imaging Library (PIL)的一个分支,用于解决图像。它是 Python 编程语言中最罕用的图像处理库,提供宽泛的图像处理性能,包含显示、操作和保留图片等。Pillow 库的指标是使得图片解决在 Python 中更加容易进行。

二、装置和根本应用

首先,咱们须要在 Python 环境中装置 Pillow 库。在命令行中输出以下指令即可:

pip install pillow

装置实现后,咱们能够开始应用 Pillow 来解决图像。首先,咱们须要导入 Image 模块,而后应用 Image.open() 办法关上一个图像文件。这个办法会返回一个 Image 对象,咱们能够对这个对象进行操作,比方显示图像。

from PIL import Image

# 关上图像
img = Image.open('example.jpg')

# 显示图像
img.show()

三、图像处理

Pillow 库为咱们提供了丰盛的图像处理性能。以下咱们将具体介绍其中的一部分。

  1. 裁剪图像 :咱们能够应用Image.crop() 办法裁剪图像。这个办法须要一个四元素的元组参数,别离代表裁剪区域的左、上、右、下四个坐标。

    # 裁剪
    box = (100, 100, 400, 400)
    region = img.crop(box)
    region.show()
  2. 旋转图像 :咱们能够应用Image.rotate() 办法旋转图像。这个办法须要一个角度参数。

    # 旋转
    img_rotated = img.rotate(45)
    img_rotated.show()
  3. 调整图像大小 :咱们能够应用Image.resize() 办法调整图像的大小。这个办法须要一个二元素的元组参数,别离代表新的宽度和高度。

    # 调整大小
    img_resized = img.resize((128, 128))
    img_resized.show()
  4. 扭转色彩 :咱们能够应用Image.convert() 办法扭转图像的色彩。这个办法须要一个色彩模式字符串参数。

    # 扭转色彩
    img_gray = img.convert('L')
    img_gray.show()

四、图像的保留和格局转换

在咱们解决完图像后,可能须要将解决后的图像保留下来。Pillow 库的 Image 对象提供了 save() 办法,咱们能够用它来保留图像。这个办法须要一个文件门路参数,示意保留图像的门路和文件名。

# 保留图像
img.save('new_example.jpg')

此外,Pillow 库还反对多种图像格式的转换,包含 JPEG、PNG、BMP、GIF、PPM 和 TIFF 等。咱们能够在保留图像时,间接通过文件的扩展名指定图像的格局。例如,如果咱们想将图像保留为 PNG 格局,只须要将文件名设置为以 .png 结尾的名字即可。

# 保留为 PNG 格局
img.save('new_example.png')

Pillow 会主动依据文件扩展名决定图像的格局。如果你不指定文件扩展名,Pillow 将默认保留为 JPEG 格局。

同时,如果咱们须要在保留图像时设置一些特定的参数,例如 JPEG 的品质,咱们能够将这些参数作为关键字参数传给 save() 办法。以下是一个示例:

# 以指定品质保留 JPEG 图像
img.save('new_example.jpg', quality=95)

须要留神的是,不同的图像格式反对的参数是不同的。有些参数可能只对特定的图像格式无效。你能够查看 Pillow 的官网文档,获取更多对于保留图像和格局转换的信息。

五、色彩空间与色彩转换

在图像处理中,色彩空间转换是一个常见的工作。Pillow 库反对多种色彩空间,例如 RGB、HSV 等。咱们能够应用 Image.convert() 办法将图像从一个色彩空间转换到另一个色彩空间。

# 转换色彩空间
img_hsv = img.convert('HSV')
img_hsv.show()

六、图像的合成与拼接

如果你有多张图像,想将它们合并成一张新的图像,Pillow 库也能够帮忙你实现。咱们能够应用 Image.blend() 办法将两张大小雷同的图像进行混合,或者应用 Image.composite() 办法将多张图像依照肯定的规定合成。

另外,如果你想将多张图像拼接成一张新的图像,你能够应用 Image.new() 办法创立一个新的空白图像,而后应用 Image.paste() 办法将其余图像粘贴到空白图像上。

# 创立一个新的空白图像
new_img = Image.new('RGB', (500, 500))

# 将其余图像粘贴到新图像上
new_img.paste(img, (0, 0))
new_img.paste(img_resized, (200, 200))
new_img.show()

七、图像绘图和文字增加

Pillow 还提供了一些简略的图形绘制性能,比方绘制线条、圆形、多边形等。咱们能够通过 ImageDraw 模块来进行绘图。上面是一个简略的例子:

from PIL import ImageDraw

draw = ImageDraw.Draw(img)
draw.line((0, 0) + img.size, fill=128)
draw.line((0, img.size[1], img.size[0], 0), fill=128)
img.show()

此外,Pillow 还容许咱们向图像中增加文字。咱们能够应用 ImageDraw.text() 办法来增加文字。须要留神的是,增加文字须要指定字体,这须要应用 ImageFont 模块。

from PIL import ImageDraw, ImageFont

# 创立一个字体对象
font = ImageFont.truetype('arial.ttf', 15)

draw = ImageDraw.Draw(img)
draw.text((10, 10), 'Hello, Pillow!', font=font, fill='white')
img.show()

八、结语

以上就是咱们对 Python 的 Pillow 库的一次简略的摸索。事实上,Pillow 库还有很多其余弱小的性能期待咱们去发现。例如,咱们能够应用 Pillow 库来解决 GIF 动画,或者读取和批改图像的元数据等。总的来说,如果你须要在 Python 中进行图像处理,Pillow 库是一个不错的抉择。

正文完
 0