【图片操作】批量转换黑白图片

653 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

一、前言

关于今天的内容,我不知道有什么情况需要将图片批量转换称黑白图片。因此本文的主题是对图片的的简单操作。 在Python3中,有一个第三方的Pillow库可以用来操作图片,使用非常简单,下面完美来具体看看。

二、Pillow的使用

1、安装

Pillow的安装很简单,我们只需要执行下面的语句即可:

pip install pillow

安装完成后可以通过下面语句导入:

import PIL

这里为了适配python2的PIL库,所以导入时是用import PIL

2、读取和显示

Pillow读取图片和显示图片的操作非常简单,具体代码如下:

# 导入PIL的子模块Image
from PIL import Image
# 读取图片
img = Image.open("test.jpg")
# 显示图片
img.show()

这里Image是Pillow的一个子模块,其中Image.open函数可以用于读取图片。该函数会返回一个特殊的Image对象,我们可以使用这个对象的一些方法。其中img.show方法就是用于显示图片的方法。

2、转换称黑白图片

我们可以调用图片的convert函数转换图片的模式,这里的模式有RGB、ARGB、GRAY等,其中GRAY就是灰度图片,也就是我们常说的黑白图片,具体代码如下:

from PIL import Image
img = Image.open("test.jpg")
# 转换称黑白图片
gray = img.convert("L")
# 将黑白图片保存
gray.save("11.jpg")

下面是转换后的效果:

图片1.png 这里我们给convert传了一个参数“L”,就是转换称灰度图的意思。另外我们还调用save方法保存图片。

三、批量转换黑白图片

这里我们结合os模块,将指定目录下的图片转换称黑白图片。在生成图片前,我们需要创建一个文件夹:

import os
if not os.path.exists("test_gray"):
    os.mkdir("test_gray")

执行上面代码,我们就可以在当前目录下创建一个test_gray文件夹。下面我们就可以获取所有图片的路径了:

dirname = "test"
# 获取图片的路径列表
imgs = [os.path.join(dirname, i) for i in os.listdir(dirname)]

这里的代码可以等价于:

imgs = []
dirname = "test"
for img in os.listdir(dirname):
    path = os.path.join(dirname, img)
    imgs.append(path)

这里就不解释了。然后就是转换成黑白图片的操作了,完整代码如下:

import os
from PIL import Image
if not os.path.exists("test_gray"):
    os.mkdir("test_gray")
dirname = "test"
imgs = [os.path.join(dirname, i) for i in os.listdir(dirname)]
for idx, img in enumerate(imgs):
    if img.endswith("jpg") or img.endswith("png") or img.endswith("jpeg"):
        img = Image.open(img)
        gray = img.convert("L")
        gray.save("test_gray/" + str(idx) + ".jpg")

运行上面代码就可以实现图片转换成黑白图片的操作了。