Python批量修改图片格式

在现代社会中,图片的使用无处不在。在编辑和管理图片时,常常需要进行格式转换,比如将JPEG格式的图片转换成PNG格式。在这里,我们将介绍一个简单的Python脚本,帮助您批量修改图片格式。通过这个脚本,您可以轻松地将一系列图片文件转换为您希望的格式。

1. 准备工作

首先,您需要确保在您的计算机上安装了Python环境。该示例使用Python 3.x版本。此外,我们将使用一个名为Pillow的库来处理图片操作。您可以通过以下命令安装Pillow:

pip install Pillow

Pillow是Python Imaging Library(PIL)的一个分支,它支持多种图片格式。

2. 脚本实现

下面是一个示例脚本,它能够将一个文件夹中的所有图片从一种格式转换为另一种格式。我们假设要将所有JPEG格式的图片转换为PNG格式。

代码示例

import os
from PIL import Image

# 定义转换函数
def convert_images(input_folder, output_folder, target_format):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for filename in os.listdir(input_folder):
        if filename.endswith('.jpg') or filename.endswith('.jpeg'):
            img_path = os.path.join(input_folder, filename)
            img = Image.open(img_path)

            # 设置输出文件路径
            output_filename = os.path.splitext(filename)[0] + '.' + target_format
            output_path = os.path.join(output_folder, output_filename)

            # 保存新格式的图片
            img.save(output_path, target_format.upper())
            print(f'Converted {filename} to {output_filename}')

# 使用函数
input_folder = 'input_images'     # 输入文件夹路径
output_folder = 'output_images'   # 输出文件夹路径
target_format = 'png'              # 目标格式

convert_images(input_folder, output_folder, target_format)

代码解析

  1. 导入库:首先,我们导入了osPIL库,用于文件操作和图片处理。

  2. 定义转换函数:我们定义了一个名为convert_images的函数,接受输入文件夹路径、输出文件夹路径和目标格式作为参数。

  3. 检查和创建输出文件夹:如果输出文件夹不存在,我们使用os.makedirs()来创建它,确保文件可以被正确保存。

  4. 遍历文件夹:使用os.listdir()函数遍历输入文件夹中的所有文件,检查文件扩展名,以确定哪个文件是JPEG格式的。

  5. 打开和保存图片:利用Image.open()函数打开每个JPEG文件,并使用.save()方法将其保存为目标格式(如PNG)。在这个过程中,输出文件名是通过去除扩展名和添加目标格式生成的。

  6. 执行函数:最后,我们定义了输入文件夹、输出文件夹和目标格式,调用convert_images()函数进行转换。

3. 流程图

为了让这个过程更加清晰,以下是整个批量修改图片格式的流程图:

flowchart TD
    A[输入文件夹] --> B{检查文件格式}
    B -->|JPEG| C[打开图片]
    B -->|其他| D[跳过]
    C --> E[生成输出文件名]
    E --> F[保存为目标格式]
    F --> G[结束]

4. 结论

通过上述示例,您可以通过简单的Python代码完成批量修改图片格式的任务。这个脚本非常灵活,您可以根据需要轻松更改输入和输出的文件夹路径,以及目标格式。此外,Pillow库强大的功能还支持多种其他图片处理方法,比如调整大小、旋转和滤镜应用。希望这个示例能够激发您对Python图片处理的兴趣,并帮助您在日常工作中提高效率!如果您有进一步的需求或问题,请随时进行探索和尝试!