一、前言
关于今天的内容,我不知道有什么情况需要将图片批量转换称黑白图片。因此本文的主题是对图片的的简单操作。 在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") 复制代码
运行上面代码就可以实现图片转换成黑白图片的操作了。