本文目录导读:

在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:适合数据可视化相关的图片保存
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播