Pixel Aurora Engine 输出后处理:使用Python PIL库进行批量图片裁剪与调色

张开发
2026/4/10 21:58:47 15 分钟阅读

分享文章

Pixel Aurora Engine 输出后处理:使用Python PIL库进行批量图片裁剪与调色
Pixel Aurora Engine 输出后处理使用Python PIL库进行批量图片裁剪与调色1. 引言当你使用Pixel Aurora Engine生成了一批精美的图像后接下来可能会遇到这样的问题图片尺寸不统一需要调整、某些区域需要突出显示、色彩效果需要微调或者需要添加一些个性化元素。这时候Python的PILPillow库就能派上大用场了。本教程将带你从零开始学习如何使用PIL库对Pixel Aurora Engine生成的图像进行常见的后处理操作。即使你刚接触Python也能跟着步骤轻松上手。我们将覆盖从基础安装到实际应用的完整流程包括批量调整尺寸、智能裁剪、色彩调整、添加水印和格式转换等实用功能。2. 环境准备与快速部署2.1 安装Pillow库首先确保你已经安装了Python建议3.6版本。然后打开终端或命令提示符运行以下命令安装Pillowpip install pillow安装完成后可以通过以下命令验证是否安装成功python -c from PIL import Image; print(Image.__version__)如果输出版本号如9.5.0说明安装成功。2.2 准备测试图像为了后续演示我们先准备一些Pixel Aurora Engine生成的图像。假设这些图像都存放在项目目录下的input_images文件夹中。你可以创建如下目录结构project_folder/ ├── input_images/ │ ├── image1.jpg │ ├── image2.png │ └── ... └── process_images.py3. 基础图像处理操作3.1 批量调整图像尺寸很多时候我们需要将不同尺寸的图像统一调整为特定大小。以下代码展示了如何批量调整图像尺寸from PIL import Image import os def resize_images(input_folder, output_folder, target_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) with Image.open(img_path) as img: # 保持宽高比调整大小 img.thumbnail(target_size, Image.ANTIALIAS) output_path os.path.join(output_folder, filename) img.save(output_path) print(f已处理: {filename}) # 使用示例 resize_images(input_images, resized_images, (800, 600))这段代码会创建输出文件夹如果不存在遍历输入文件夹中的所有图片文件保持原始宽高比调整大小最长边不超过800x600保存处理后的图片到输出文件夹3.2 自动裁剪到感兴趣区域有时我们只想保留图片的某个特定区域。PIL提供了灵活的裁剪功能def crop_images(input_folder, output_folder, crop_box(100, 100, 700, 500)): 裁剪图片到指定区域 crop_box格式(左, 上, 右, 下) 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) with Image.open(img_path) as img: cropped img.crop(crop_box) output_path os.path.join(output_folder, filename) cropped.save(output_path) print(f已裁剪: {filename}) # 使用示例从(100,100)到(700,500)的区域 crop_images(input_images, cropped_images, (100, 100, 700, 500))4. 高级色彩调整技巧4.1 调整亮度、对比度和饱和度PIL的ImageEnhance模块可以轻松调整这些参数from PIL import ImageEnhance def adjust_colors(input_folder, output_folder, brightness1.2, contrast1.1, saturation1.3): 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) with Image.open(img_path) as img: # 调整亮度 enhancer ImageEnhance.Brightness(img) img enhancer.enhance(brightness) # 调整对比度 enhancer ImageEnhance.Contrast(img) img enhancer.enhance(contrast) # 调整饱和度 enhancer ImageEnhance.Color(img) img enhancer.enhance(saturation) output_path os.path.join(output_folder, filename) img.save(output_path) print(f已调整: {filename}) # 使用示例亮度1.2倍对比度1.1倍饱和度1.3倍 adjust_colors(input_images, adjusted_images, 1.2, 1.1, 1.3)4.2 智能白平衡调整对于色彩偏色的图片我们可以实现简单的自动白平衡def auto_white_balance(input_folder, output_folder): 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) with Image.open(img_path) as img: # 转换为RGB模式如果是RGBA if img.mode RGBA: img img.convert(RGB) # 获取图像直方图 histogram img.histogram() # 计算RGB通道的平均值 r_avg sum(histogram[0:256]) / 256 g_avg sum(histogram[256:512]) / 256 b_avg sum(histogram[512:768]) / 256 # 计算调整系数 avg (r_avg g_avg b_avg) / 3 r_scale avg / r_avg g_scale avg / g_avg b_scale avg / b_avg # 应用调整 img img.point(lambda i: i * r_scale if i 256 else (i * g_scale if i 512 else i * b_scale)) output_path os.path.join(output_folder, filename) img.save(output_path) print(f已调整白平衡: {filename})5. 添加个性化元素5.1 添加水印为图片添加水印可以保护你的作品def add_watermark(input_folder, output_folder, watermark_text© My Art): 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) with Image.open(img_path) as img: # 创建一个用于绘制水印的临时图像 from PIL import ImageDraw, ImageFont watermark Image.new(RGBA, img.size, (0,0,0,0)) # 获取绘图对象 draw ImageDraw.Draw(watermark) # 设置字体需要系统中安装相应字体 try: font ImageFont.truetype(arial.ttf, 40) except: font ImageFont.load_default() # 计算水印位置右下角 text_width, text_height draw.textsize(watermark_text, font) x img.width - text_width - 20 y img.height - text_height - 20 # 绘制半透明水印 draw.text((x, y), watermark_text, fontfont, fill(255,255,255,128)) # 合并水印和原图 watermarked Image.alpha_composite( img.convert(RGBA), watermark) # 保存结果 output_path os.path.join(output_folder, filename) watermarked.save(output_path, quality95) print(f已添加水印: {filename})5.2 添加艺术边框为图片添加边框可以增强视觉效果def add_border(input_folder, output_folder, border_size20, border_color(255, 255, 255)): 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) with Image.open(img_path) as img: # 计算新图像尺寸 new_width img.width 2 * border_size new_height img.height 2 * border_size # 创建新图像 bordered Image.new(img.mode, (new_width, new_height), border_color) # 粘贴原图到中心 bordered.paste(img, (border_size, border_size)) # 保存结果 output_path os.path.join(output_folder, filename) bordered.save(output_path) print(f已添加边框: {filename})6. 格式转换与优化6.1 批量转换为WebP格式WebP格式可以提供更好的压缩率def convert_to_webp(input_folder, output_folder, quality80): 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) with Image.open(img_path) as img: # 生成输出文件名替换扩展名 output_filename os.path.splitext(filename)[0] .webp output_path os.path.join(output_folder, output_filename) # 保存为WebP格式 img.save(output_path, webp, qualityquality) print(f已转换: {filename} → {output_filename})6.2 优化图像质量与大小平衡图像质量和文件大小def optimize_images(input_folder, output_folder, quality85, optimizeTrue): 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) with Image.open(img_path) as img: # 如果是PNG转换为更高效的格式 if filename.lower().endswith(.png): output_filename os.path.splitext(filename)[0] .jpg output_path os.path.join(output_folder, output_filename) img.convert(RGB).save(output_path, jpeg, qualityquality, optimizeoptimize) else: output_path os.path.join(output_folder, filename) img.save(output_path, qualityquality, optimizeoptimize) print(f已优化: {filename})7. 总结通过本教程我们学习了如何使用Python的Pillow库对Pixel Aurora Engine生成的图像进行各种后处理操作。从基础的尺寸调整和裁剪到高级的色彩校正和特效添加再到格式转换和优化这些技能可以帮助你更好地管理和优化生成的艺术作品。实际使用中你可以根据需要组合这些功能。例如可以先调整尺寸和色彩然后添加水印最后转换为WebP格式。Pillow库的功能远不止于此它还支持滤镜应用、图像合成等更高级的操作值得进一步探索。处理大量图像时建议先在小样本上测试效果确认满意后再批量处理。同时记得保留原始文件以防需要重新处理。随着你对这些工具的熟悉你会发现它们能极大地提升你的工作效率和创作灵活性。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章