1. 背景介绍
随着数字化时代的到来,图片处理需求也越来越大,如何快速高效地处理大量图片是我们需要掌握的技能。Python是一种功能强大的编程语言,可以帮助我们轻松地实现图片处理。本文将介绍如何使用Python对图片进行批量处理。
2. 安装Python
在开始之前,我们需要先安装Python。可以在官网https://www.python.org/downloads/下载适合自己系统的安装包,安装完成后,在命令行中输入:
python
如果输出了Python的版本号,则说明安装成功。
3. 安装必要的库
Python提供了很多图片处理的库,我们需要安装必要的库。常用的图片处理库有:
Pillow
OpenCV
我们在这里以Pillow为例来进行介绍。可以在命令行中输入以下命令来安装:
pip install Pillow
4. 批量处理
4.1. 批量修改尺寸
常见的图片处理需求之一就是修改图片的尺寸。可以使用Pillow提供的resize方法来实现。以下代码将会将文件夹下所有的jpg图片的尺寸都缩小到原来的50%:
from PIL import Image
import os
path = 'img_folder'
for filename in os.listdir(path):
if filename.endswith('.jpg'):
with Image.open(os.path.join(path, filename)) as im:
width, height = im.size
im_resized = im.resize((int(width*0.5), int(height*0.5)))
im_resized.save(os.path.join(path, 'resized', filename))
上述代码中,首先我们使用os库中的listdir方法遍历文件夹下所有jpg图片。然后使用Pillow的Image.open方法打开图片,获取图片的宽高,然后使用Image.resize方法将图片缩小,最后使用Image.save方法保存图片。如果我们想要保存到另一个文件夹中,可以在os.path.join(path, 'resized', filename)中指定存储位置。
4.2. 批量修改格式
有些时候我们需要将一些图片的格式修改为其他格式,比如把jpg格式修改为png格式,可以使用Pillow提供的方法来实现。以下代码将会将文件夹下所有的jpg图片都转换为png格式:
from PIL import Image
import os
path = 'img_folder'
for filename in os.listdir(path):
if filename.endswith('.jpg'):
with Image.open(os.path.join(path, filename)) as im:
im.save(os.path.join(path, 'png', os.path.splitext(filename)[0] + '.png'))
代码中,使用os库中的listdir方法遍历文件夹下所有jpg图片,使用Pillow的Image.open方法打开图片,然后使用Image.save方法将图片保存为png格式。这里需要注意的是,图片的文件名需要按照要求修改。我们使用os.path.splitext方法获取不带后缀名的文件名,然后拼接上新的后缀名。
4.3. 批量添加水印
有些时候我们需要给一些图片添加水印,这时可以使用Pillow来实现。以下代码将会在文件夹下所有的jpg图片上添加一个水印:
from PIL import Image, ImageDraw, ImageFont
import os
path = 'img_folder'
text = 'watermark'
font = ImageFont.truetype('arial.ttf', 36)
color = (255, 255, 255, 128)
for filename in os.listdir(path):
if filename.endswith('.jpg'):
with Image.open(os.path.join(path, filename)) as im:
width, height = im.size
draw = ImageDraw.Draw(im)
textwidth, textheight = draw.textsize(text, font)
x = width - textwidth - 10
y = height - textheight - 10
draw.text((x, y), text, font=font, fill=color)
im.save(os.path.join(path, 'watermarked', filename))
上述代码中,我们先定义了水印的文字、字体、颜色。然后使用os库中的listdir方法遍历文件夹下所有jpg图片,使用Pillow的Image.open方法打开图片,创建一个ImageDraw对象,在图片上添加水印文字,最后使用Image.save方法保存图片。如果我们想要保存到另一个文件夹中,可以在os.path.join(path, 'watermarked', filename)中指定存储位置。
4.4. 批量调整亮度和对比度
有些时候我们需要调整一些图片的亮度和对比度,这时可以使用Pillow来实现。以下代码将会调整文件夹下所有的jpg图片的亮度和对比度:
from PIL import Image, ImageEnhance
import os
path = 'img_folder'
for filename in os.listdir(path):
if filename.endswith('.jpg'):
with Image.open(os.path.join(path, filename)) as im:
enhancer = ImageEnhance.Brightness(im)
im_brightened = enhancer.enhance(1.2)
enhancer = ImageEnhance.Contrast(im_brightened)
im_contrasted = enhancer.enhance(1.2)
im_contrasted.save(os.path.join(path, 'adjusted', filename))
代码中,我们先使用os库中的listdir方法遍历文件夹下所有jpg图片,使用Pillow的Image.open方法打开图片,然后使用ImageEnhance.Brightness方法调整图片的亮度,再使用ImageEnhance.Contrast方法调整图片的对比度。最后使用Image.save方法保存修改后的图片。如果我们想要保存到另一个文件夹中,可以在os.path.join(path, 'adjusted', filename)中指定存储位置。
5. 结论
本文介绍了如何使用Python对图片进行批量处理。我们介绍了常见的图片处理需求,并使用Pillow库提供的方法来实现。希望本文对大家能够有所帮助。