本文目录导读:

在Python中保存处理后的图片,主要有以下几种常用方法:
使用PIL/Pillow库
from PIL import Image
# 打开图片并进行处理
img = Image.open('input.jpg')
# 对图片进行一些处理,例如转换为灰度图
gray_img = img.convert('L')
# 保存处理后的图片
gray_img.save('output.jpg') # 保存为JPEG格式
# 或者保存为其他格式
gray_img.save('output.png') # 保存为PNG格式
# 可以指定质量参数(仅JPEG有效)
gray_img.save('output.jpg', quality=85)
使用OpenCV库
import cv2
# 读取图片
img = cv2.imread('input.jpg')
# 对图片进行处理,例如转换为灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 保存处理后的图片
cv2.imwrite('output.jpg', gray_img)
# 可以指定编码参数
cv2.imwrite('output.jpg', gray_img, [cv2.IMWRITE_JPEG_QUALITY, 85])
使用Matplotlib库
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# 读取图片
img = mpimg.imread('input.jpg')
# 对图片进行处理
# ... 处理代码 ...
# 保存图片(需要先关闭坐标轴)
plt.axis('off')
plt.imsave('output.jpg', img)
批量处理并保存
import os
from PIL import Image
import glob
# 批量处理同一文件夹下的所有jpg图片
input_folder = 'input_images/'
output_folder = 'output_images/'
# 创建输出文件夹
os.makedirs(output_folder, exist_ok=True)
# 遍历所有jpg文件
for img_path in glob.glob(input_folder + '*.jpg'):
# 读取图片
img = Image.open(img_path)
# 处理图片(例如旋转)
processed_img = img.rotate(90)
# 获取文件名
filename = os.path.basename(img_path)
# 保存处理后的图片
output_path = os.path.join(output_folder, filename)
processed_img.save(output_path)
print(f'已保存: {output_path}')
保存时设置不同的格式和参数
from PIL import Image
img = Image.open('input.jpg')
# JPEG格式保存(支持质量参数)
img.save('output.jpg', 'JPEG', quality=95)
# PNG格式保存(支持压缩级别)
img.save('output.png', 'PNG', optimize=True)
# 保存为WebP格式(更小的文件大小)
img.save('output.webp', 'WEBP', quality=80)
# BMP格式保存(无压缩)
img.save('output.bmp', 'BMP')
处理过程中保存中间结果
from PIL import Image, ImageFilter
img = Image.open('input.jpg')
os.makedirs('processing_steps', exist_ok=True)
# 步骤1: 转换为灰度图
step1 = img.convert('L')
step1.save('processing_steps/step1_gray.jpg')
# 步骤2: 应用模糊滤镜
step2 = step1.filter(ImageFilter.BLUR)
step2.save('processing_steps/step2_blur.jpg')
# 步骤3: 边缘检测
step3 = step2.filter(ImageFilter.FIND_EDGES)
step3.save('processing_steps/step3_edges.jpg')
常见问题解决
# 问题1: 保存路径含有中文字符
img.save('图片/结果/output.jpg') # 需要确保目录存在
# 问题2: 检查目录是否存在
import os
os.makedirs('output_folder', exist_ok=True)
img.save('output_folder/output.jpg')
# 问题3: 保存不同图片格式的转换
from PIL import Image
img = Image.open('input.png')
img = img.convert('RGB') # PNG可能包含透明度,需要先转换
img.save('output.jpg', 'JPEG')
完整示例:图片滤镜处理并保存
from PIL import Image, ImageFilter, ImageEnhance
import os
def process_and_save_images(input_path, output_path, operation):
"""
处理图片并保存
Args:
input_path: 输入图片路径
output_path: 输出图片路径
operation: 操作类型 ('grayscale', 'blur', 'sharpen', 'enhance')
"""
# 确保输出目录存在
os.makedirs(os.path.dirname(output_path), exist_ok=True)
# 读取图片
img = Image.open(input_path)
# 根据操作类型进行处理
if operation == 'grayscale':
processed = img.convert('L')
elif operation == 'blur':
processed = img.filter(ImageFilter.GaussianBlur(radius=5))
elif operation == 'sharpen':
processed = img.filter(ImageFilter.SHARPEN)
elif operation == 'enhance':
enhancer = ImageEnhance.Contrast(img)
processed = enhancer.enhance(1.5)
else:
print(f"不支持的操作: {operation}")
return
# 保存处理后的图片
processed.save(output_path)
print(f"已保存处理后的图片: {output_path}")
# 使用示例
process_and_save_images('input.jpg', 'output/grayscale.jpg', 'grayscale')
process_and_save_images('input.jpg', 'output/blur.jpg', 'blur')
process_and_save_images('input.jpg', 'output/sharpen.jpg', 'sharpen')
选择哪种方法取决于你的具体需求:
- PIL/Pillow:适合简单的图片处理任务
- OpenCV:适合复杂的计算机视觉任务
- Matplotlib:适合数据可视化相关的图片保存