小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
一、前言
关于今天的内容,我不知道有什么情况需要将图片批量转换称黑白图片。因此本文的主题是对图片的的简单操作。 在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")
下面是转换后的效果:
这里我们给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")
运行上面代码就可以实现图片转换成黑白图片的操作了。