Python|Pillow图片批量处理:添加复古纸张纹理背景

在整理排版文章、制作电子书或发布内容时,我们常常会遇到这样一个需求:手头上有几十张纯白底色的文字图片,为了追求视觉美感或特定的复古风格,需要把它们的底色统一换成带有细腻纹理的复古宣纸背景。

如果用Photoshop一张张手动处理,不仅效率低下,而且极为枯燥。本文讲解如何利用 Python 结合 Pillow 图像处理库,只需几行代码,就能实现数十张图片的一键自动化批量处理。

一、 核心原理解析:为什么选择“正片叠底”?

要在文字不失真的前提下完美融合背景纹理,最科学的方法是使用图像处理中的 正片叠底(Multiply) 模式:

  • 色彩叠加原理:将背景纹理图与前景白底文字图进行像素级乘法运算。
  • 完美融合:纯白色(RGB值为 255, 255, 255)与任何背景相乘后保持不变,从而让背景纹理自然透出;而黑色的文字部分则会被完整保留。

二、 环境准备(以 macOS 为例)

确保你的电脑已安装 Python。打开终端(Terminal),执行以下命令安装图像处理库 Pillow:

Bash
python3 -m pip install Pillow

安装成功后,我们就可以开始编写自动化脚本了。

三、 准备工作与目录结构

在电脑工作目录下创建一个专属文件夹(例如 image_processor),并在其中准备好文件结构:

image_processor/
├── process.py # 我们的 Python 自动化脚本
├── background.jpg # 无字的复古纹理背景图
├── input_images/ # 文件夹:存放待处理的白底文字图
└── output_images/ # 文件夹:程序自动生成的成品图

四、 完整 Python 批处理源代码

在 process.py 文件中写入以下代码:

Python
import os
from PIL import Image, ImageChops

def batch_process_images(input_dir, output_dir, bg_image_path):
    # 如果输出文件夹不存在,自动创建
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
        
    # 打开背景纹理图
    try:
        base_bg = Image.open(bg_image_path).convert("RGB")
    except Exception as e:
        print(f"无法打开背景图 {bg_image_path}: {e}")
        return

    # 遍历输入目录下的所有图片
    count = 0
    for filename in os.listdir(input_dir):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.webp', '.bmp')):
            img_path = os.path.join(input_dir, filename)
            
            try:
                # 打开白底文字图
                fg_img = Image.open(img_path).convert("RGB")
                
                # 调整背景图尺寸以匹配当前文字图的大小
                current_bg = base_bg.resize(fg_img.size)
                
                # 核心:使用“正片叠底”(Multiply)让白底变透明并完美融合复古纹理
                result = ImageChops.multiply(current_bg, fg_img)
                
                # 保存结果到输出文件夹
                output_path = os.path.join(output_dir, filename)
                result.save(output_path, quality=95)
                print(f"[{count+1}] 已成功处理并保存: {filename}")
                count += 1
                
            except Exception as e:
                print(f"处理文件 {filename} 时出错: {e}")
                
    print(f"\n全部处理完成!共处理了 {count} 张图片。")

if __name__ == "__main__":
    # 配置路径
    INPUT_FOLDER = "./input_images"     
    OUTPUT_FOLDER = "./output_images"   
    BG_IMAGE = "background.jpg"         
    
    batch_process_images(INPUT_FOLDER, OUTPUT_FOLDER, BG_IMAGE)

五、 运行Python

打开终端,通过 cd 命令进入脚本所在文件夹:

Bash
cd ~/path/to/image_processor

运行脚本:

Bash
python3 process.py

终端即会显示处理进度。完成后,前往 output_images 文件夹即可查看全部换好底色的图片。

通过这套基于 Python + Pillow 的轻量级方案,即免去了商业修图软件,几秒钟即可搞定海量图片的视觉风格统一。

更多文章