
# 用Python批量处理图片:让效率与创意齐飞
在数字时代,图片处理已成为许多工作与爱好中不可或缺的一环。无论是整理旅行照片、优化电商产品图,还是为设计项目准备素材,手动一张张处理既耗时又容易出错。幸运的是,借助Python的强大生态,我们可以轻松实现图片的批量自动化处理,将重复劳动交给代码,把宝贵时间留给创意。
## 一、准备工作:搭建你的图片处理工坊
要开始批量处理图片,首先需要安装Python环境(推荐3.6以上版本)和核心图像库Pillow。Pillow是Python Imaging Library(PIL)的友好分支,功能强大且易于使用。
打开终端或命令提示符,执行以下命令安装:
```bash
pip install Pillow
```
同时,建议将待处理的图片统一放入一个文件夹,并在代码中指定输出文件夹,避免覆盖原图。
## 二、四大常用批量处理场景实战
### 1. 尺寸统一:快速生成缩略图
电商平台或内容网站常要求图片尺寸一致。以下代码可将指定文件夹内所有图片调整为800x600像素:
```python
from PIL import Image
import os
def resize_images(input_folder, output_folder, size=(800, 600)):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
img_resized = img.resize(size, Image.Resampling.LANCZOS)
output_path = os.path.join(output_folder, filename)
img_resized.save(output_path)
print(f"已处理: {filename}")
# 调用示例
resize_images("原始图片", "统一尺寸")
```
### 2. 格式转换:一键切换图片格式
不同场景需要不同格式的图片(如JPG用于网页,PNG保留透明背景)。这段代码可将文件夹内图片统一转换为JPG格式:
```python
def convert_format(input_folder, output_folder, new_format="JPEG"):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
# 生成新文件名(保留原名称,仅改扩展名)
new_filename = os.path.splitext(filename)[0] + f".{new_format.lower()}"
output_path = os.path.join(output_folder, new_filename)
# 转换并保存
img.convert("RGB").save(output_path, new_format)
print(f"已转换: {filename} -> {new_filename}")
```
### 3. 智能优化:自动旋转与添加水印
手机拍摄的照片有时方向不正确,批量校正能极大提升浏览体验。结合水印添加,还能保护版权:
```python
def auto_rotate_and_watermark(input_folder, output_folder, watermark_text="©我的作品"):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
# 自动旋转(根据EXIF信息)
try:
exif = img._getexif()
if exif:
orientation = exif.get(0x0112)
if orientation == 3:
img = img.rotate(180, expand=True)
elif orientation == 6:
img = img.rotate(270, expand=True)
elif orientation == 8:
img = img.rotate(90, expand=True)
except:
pass
# 添加简单文字水印
from PIL import ImageDraw, ImageFont
draw = ImageDraw.Draw(img)
# 可使用自定义字体,此处使用默认字体
draw.text((10, 10), watermark_text, fill=(255, 255, 255, 128))
output_path = os.path.join(output_folder, filename)
img.save(output_path)
print(f"已优化: {filename}")
```
### 4. 批量重命名:有序整理海量图片
系统化的命名让图片管理更高效:
```python
def batch_rename(input_folder, prefix="photo_", start_num=1):
counter = start_num
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
ext = os.path.splitext(filename)[1]
new_name = f"{prefix}{counter:03d}{ext}"
old_path = os.path.join(input_folder, filename)
new_path = os.path.join(input_folder, new_name)
os.rename(old_path, new_path)
print(f"重命名: {filename} -> {new_name}")
counter += 1
```
## 三、进阶技巧:组合使用与定时任务
真正的效率提升来自于将这些功能组合。你可以创建一个主函数,依次调用上述功能,一次性完成“重命名→旋转→调整尺寸→添加水印→转换格式”的全流程。
更高级的应用是结合任务计划(如Windows的任务计划程序或Linux的cron),让Python脚本定时自动处理特定文件夹中的新图片,实现完全自动化的图片工作流。
## 四、安全与创意并重
批量处理时,请务必:
1. 始终保留原始文件备份
2. 先在小样本上测试代码效果
3. 注意版权,仅处理你有权修改的图片
Python批量处理图片的魅力在于,它将我们从重复劳动中解放,让我们有更多时间专注于摄影的构图、设计的灵感或内容的创作。技术本应服务于人,而非束缚于人。当你掌握这些工具后,不妨发挥创意,定制属于自己的图片处理流程,让科技真正为你的生活与工作增添色彩。
从今天开始,告别机械点击,用几行代码开启高效优雅的图片处理之旅吧!
本文链接:https://www.j520m.site/?id=68
--EOF--
发表于 2026-04-09 。
Comments