详解Python PIL Image.convert()方法

  • Post category:Python

Python 的 PIL 库(Python Imaging Library)提供了 Image 类,用于处理图像。其中 Image.convert() 方法是 Image 类的一个重要方法之一。

Image.convert() 方法的功能

PIL 中的 convert() 方法用于将图像转换为不同的格式,其参数是一种 Image 模式(mode)。Image 模式是图像的像素表示方式,不同的 Image 模式将决定图像中的每个像素需要使用多少位(或字节)表示。

convert() 方法返回一个新的 Image 实例,而不会修改原始图像。

Image.convert() 方法的语法

Image.convert(mode=None, matrix=None, dither=None, palette=0, colors=256)
  • mode:指定目标 Image 模式,可以是一个字符串或 Image 模式常量。如果不指定该参数,则返回一个源 Image 实例副本。
  • matrix:指定颜色变换矩阵。该参数可以是一个6个浮点数的序列,用于描述一个 3×2 的变换矩阵;或者是一个包含3个浮点数的序列,用于描述一个 3×1 的变换矩阵。默认为 None。
  • dither:指定抖动方法。可以是一个 Image.DITHER 常量,用于控制图像到低色深模式时如何处理色彩,以实现较好的效果。默认为 None。
  • palette:指定调色板使用的颜色数量,可以是一个字符串或数字。作为数字时,该数字会被自动限制在2和256之间;作为字符串时,支持 “WEB”,”ADAPTIVE”,”RANDOM” 等。默认为 0,表示按照目标模式的默认色彩调整。
  • colors:指定调色板包含的颜色数量。

Image.convert() 方法的示例说明

示例一

将图像转换为灰度图像,使用 Image.convert() 方法的常用方法之一。

from PIL import Image

img = Image.open("test.jpg")
gray_img = img.convert("L")
gray_img.show()

该示例打开了一个名为 test.jpg 的图像文件,并将它转换为灰度(黑白)图像,显示该图像。将参数 L 传给 convert() 方法表示要将图像转换为8位灰度图像。

示例二

将图像转换为 1 位黑白图像。

from PIL import Image

img = Image.open("test.jpg")
bw_img = img.convert("1", dither=Image.NONE)
bw_img.show()

该示例也打开了一个名为 test.jpg 的图像文件,但将它转换为1位黑白图像,显示该图像。将参数 1 传给 convert() 方法表示要将图像转换为1位黑白图像,而将 dither 参数指定为 Image.NONE 可以避免图片出现抖动效果,实现更高质量的图像处理。

通过以上两个示例,我们可以看到 convert() 方法的灵活性,可以通过传入不同的参数实现多样化的图像处理效果。