如何使用Python对图片进行批量处理

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库提供的方法来实现。希望本文对大家能够有所帮助。

后端开发标签