Pillow 图像基本操作
在安装 Pillow 库后,我们需要导入必要的模块:
# 导入模块 from PIL import Image, ImageFilter, ImageEnhance, ImageDraw, ImageFont import os
测试图片(下载到本地测试):
实例
以下一个完整的实例,展示了以下操作:
- 打开和显示图像基本信息
- 格式、大小、模式等
- 调整图像大小
- 将图像调整为指定尺寸
- 裁剪图像
- 从原图中提取特定区域
- 旋转图像
- 旋转45度并保留完整图像
- 翻转图像
- 水平和垂直翻转
- 转换颜色模式
- 将彩色图像转换为灰度图
- 应用滤镜
- 模糊、边缘增强、轮廓等效果
- 调整图像属性
- 亮度、对比度和锐度调整
- 添加文本
- 在图像上绘制文字
- 合并图像
- 简单的图像拼接
- 保存为不同格式和质量
- PNG、BMP和不同质量的JPEG
实例
"""
Python Pillow 图像基本操作教程
使用的测试图片: tiger.jpeg
"""
from PIL import Image, ImageFilter, ImageEnhance, ImageDraw, ImageFont
import os
def main():
# 确保我们的工作目录中有输出文件夹
output_dir = "output"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 1. 打开图像
print("1. 打开图像")
try:
img = Image.open("tiger.jpeg")
print(f"成功打开图像 - 格式: {img.format}, 大小: {img.size}, 模式: {img.mode}")
except Exception as e:
print(f"无法打开图像: {e}")
return
# 2. 显示图像基本信息
print("\n2. 图像基本信息")
print(f"图像格式: {img.format}")
print(f"图像大小 (宽x高): {img.size}")
print(f"图像模式: {img.mode}")
# 3. 调整图像大小
print("\n3. 调整图像大小")
resized_img = img.resize((400, 300))
resized_img.save(f"{output_dir}/resized_tiger.jpg")
print("已保存调整大小后的图像")
# 4. 裁剪图像
print("\n4. 裁剪图像")
# 裁剪区域 (左, 上, 右, 下)
width, height = img.size
crop_area = (width//4, height//4, 3*width//4, 3*height//4) # 裁剪中间区域
cropped_img = img.crop(crop_area)
cropped_img.save(f"{output_dir}/cropped_tiger.jpg")
print(f"已裁剪图像区域 {crop_area} 并保存")
# 5. 旋转图像
print("\n5. 旋转图像")
rotated_img = img.rotate(45, expand=True) # 旋转45度,expand=True 保留整个图像
rotated_img.save(f"{output_dir}/rotated_tiger.jpg")
print("已保存旋转后的图像")
# 6. 翻转图像
print("\n6. 翻转图像")
# 水平翻转
h_flipped = img.transpose(Image.FLIP_LEFT_RIGHT)
h_flipped.save(f"{output_dir}/horizontal_flip_tiger.jpg")
# 垂直翻转
v_flipped = img.transpose(Image.FLIP_TOP_BOTTOM)
v_flipped.save(f"{output_dir}/vertical_flip_tiger.jpg")
print("已保存水平和垂直翻转的图像")
# 7. 转换颜色模式
print("\n7. 转换颜色模式")
grayscale_img = img.convert('L') # 转换为灰度图
grayscale_img.save(f"{output_dir}/grayscale_tiger.jpg")
print("已保存灰度图像")
# 8. 应用滤镜
print("\n8. 应用滤镜")
# 模糊滤镜
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.save(f"{output_dir}/blurred_tiger.jpg")
# 边缘增强
edge_img = img.filter(ImageFilter.EDGE_ENHANCE)
edge_img.save(f"{output_dir}/edge_enhanced_tiger.jpg")
# 轮廓滤镜
contour_img = img.filter(ImageFilter.CONTOUR)
contour_img.save(f"{output_dir}/contour_tiger.jpg")
print("已保存应用不同滤镜的图像")
# 9. 调整亮度、对比度和锐度
print("\n9. 调整图像属性")
# 增加亮度
brightness = ImageEnhance.Brightness(img)
bright_img = brightness.enhance(1.5) # 亮度增加50%
bright_img.save(f"{output_dir}/brighter_tiger.jpg")
# 增加对比度
contrast = ImageEnhance.Contrast(img)
contrast_img = contrast.enhance(1.5) # 对比度增加50%
contrast_img.save(f"{output_dir}/contrast_tiger.jpg")
# 增加锐度
sharpness = ImageEnhance.Sharpness(img)
sharp_img = sharpness.enhance(2.0) # 锐度增加100%
sharp_img.save(f"{output_dir}/sharper_tiger.jpg")
print("已保存亮度、对比度和锐度调整后的图像")
# 10. 添加文字
print("\n10. 添加文字")
# 创建一个副本用于绘制
text_img = img.copy()
draw = ImageDraw.Draw(text_img)
# 尝试使用系统字体,如果失败则使用默认
try:
# 对于不同操作系统,可能需要不同的字体路径
# Windows字体路径示例
font = ImageFont.truetype("arial.ttf", 36)
except IOError:
font = ImageFont.load_default()
# 在图像上添加文字
draw.text((10, 10), "Tiger", fill=(255, 255, 255), font=font)
text_img.save(f"{output_dir}/text_tiger.jpg")
print("已保存添加文字的图像")
# 11. 合并图像(简单拼接)
print("\n11. 合并图像")
# 创建一个新图像,宽度是原图的两倍,高度相同
merged_img = Image.new('RGB', (width*2, height))
# 将原图放在左边
merged_img.paste(img, (0, 0))
# 将灰度图放在右边
merged_img.paste(grayscale_img.convert('RGB'), (width, 0))
merged_img.save(f"{output_dir}/merged_tiger.jpg")
print("已保存合并后的图像")
# 12. 保存为不同格式
print("\n12. 保存为不同格式")
img.save(f"{output_dir}/tiger.png") # PNG格式
img.save(f"{output_dir}/tiger.bmp") # BMP格式
# 保存为JPEG,设置质量
img.save(f"{output_dir}/tiger_high_quality.jpg", quality=95) # 高质量
img.save(f"{output_dir}/tiger_low_quality.jpg", quality=10) # 低质量
print("已保存为不同格式和质量的图像")
print("\n所有操作完成!处理后的图像保存在 'output' 文件夹中。")
if __name__ == "__main__":
main()
Python Pillow 图像基本操作教程
使用的测试图片: tiger.jpeg
"""
from PIL import Image, ImageFilter, ImageEnhance, ImageDraw, ImageFont
import os
def main():
# 确保我们的工作目录中有输出文件夹
output_dir = "output"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 1. 打开图像
print("1. 打开图像")
try:
img = Image.open("tiger.jpeg")
print(f"成功打开图像 - 格式: {img.format}, 大小: {img.size}, 模式: {img.mode}")
except Exception as e:
print(f"无法打开图像: {e}")
return
# 2. 显示图像基本信息
print("\n2. 图像基本信息")
print(f"图像格式: {img.format}")
print(f"图像大小 (宽x高): {img.size}")
print(f"图像模式: {img.mode}")
# 3. 调整图像大小
print("\n3. 调整图像大小")
resized_img = img.resize((400, 300))
resized_img.save(f"{output_dir}/resized_tiger.jpg")
print("已保存调整大小后的图像")
# 4. 裁剪图像
print("\n4. 裁剪图像")
# 裁剪区域 (左, 上, 右, 下)
width, height = img.size
crop_area = (width//4, height//4, 3*width//4, 3*height//4) # 裁剪中间区域
cropped_img = img.crop(crop_area)
cropped_img.save(f"{output_dir}/cropped_tiger.jpg")
print(f"已裁剪图像区域 {crop_area} 并保存")
# 5. 旋转图像
print("\n5. 旋转图像")
rotated_img = img.rotate(45, expand=True) # 旋转45度,expand=True 保留整个图像
rotated_img.save(f"{output_dir}/rotated_tiger.jpg")
print("已保存旋转后的图像")
# 6. 翻转图像
print("\n6. 翻转图像")
# 水平翻转
h_flipped = img.transpose(Image.FLIP_LEFT_RIGHT)
h_flipped.save(f"{output_dir}/horizontal_flip_tiger.jpg")
# 垂直翻转
v_flipped = img.transpose(Image.FLIP_TOP_BOTTOM)
v_flipped.save(f"{output_dir}/vertical_flip_tiger.jpg")
print("已保存水平和垂直翻转的图像")
# 7. 转换颜色模式
print("\n7. 转换颜色模式")
grayscale_img = img.convert('L') # 转换为灰度图
grayscale_img.save(f"{output_dir}/grayscale_tiger.jpg")
print("已保存灰度图像")
# 8. 应用滤镜
print("\n8. 应用滤镜")
# 模糊滤镜
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.save(f"{output_dir}/blurred_tiger.jpg")
# 边缘增强
edge_img = img.filter(ImageFilter.EDGE_ENHANCE)
edge_img.save(f"{output_dir}/edge_enhanced_tiger.jpg")
# 轮廓滤镜
contour_img = img.filter(ImageFilter.CONTOUR)
contour_img.save(f"{output_dir}/contour_tiger.jpg")
print("已保存应用不同滤镜的图像")
# 9. 调整亮度、对比度和锐度
print("\n9. 调整图像属性")
# 增加亮度
brightness = ImageEnhance.Brightness(img)
bright_img = brightness.enhance(1.5) # 亮度增加50%
bright_img.save(f"{output_dir}/brighter_tiger.jpg")
# 增加对比度
contrast = ImageEnhance.Contrast(img)
contrast_img = contrast.enhance(1.5) # 对比度增加50%
contrast_img.save(f"{output_dir}/contrast_tiger.jpg")
# 增加锐度
sharpness = ImageEnhance.Sharpness(img)
sharp_img = sharpness.enhance(2.0) # 锐度增加100%
sharp_img.save(f"{output_dir}/sharper_tiger.jpg")
print("已保存亮度、对比度和锐度调整后的图像")
# 10. 添加文字
print("\n10. 添加文字")
# 创建一个副本用于绘制
text_img = img.copy()
draw = ImageDraw.Draw(text_img)
# 尝试使用系统字体,如果失败则使用默认
try:
# 对于不同操作系统,可能需要不同的字体路径
# Windows字体路径示例
font = ImageFont.truetype("arial.ttf", 36)
except IOError:
font = ImageFont.load_default()
# 在图像上添加文字
draw.text((10, 10), "Tiger", fill=(255, 255, 255), font=font)
text_img.save(f"{output_dir}/text_tiger.jpg")
print("已保存添加文字的图像")
# 11. 合并图像(简单拼接)
print("\n11. 合并图像")
# 创建一个新图像,宽度是原图的两倍,高度相同
merged_img = Image.new('RGB', (width*2, height))
# 将原图放在左边
merged_img.paste(img, (0, 0))
# 将灰度图放在右边
merged_img.paste(grayscale_img.convert('RGB'), (width, 0))
merged_img.save(f"{output_dir}/merged_tiger.jpg")
print("已保存合并后的图像")
# 12. 保存为不同格式
print("\n12. 保存为不同格式")
img.save(f"{output_dir}/tiger.png") # PNG格式
img.save(f"{output_dir}/tiger.bmp") # BMP格式
# 保存为JPEG,设置质量
img.save(f"{output_dir}/tiger_high_quality.jpg", quality=95) # 高质量
img.save(f"{output_dir}/tiger_low_quality.jpg", quality=10) # 低质量
print("已保存为不同格式和质量的图像")
print("\n所有操作完成!处理后的图像保存在 'output' 文件夹中。")
if __name__ == "__main__":
main()
代码采用了结构化的方式,每个操作都有清晰的注释说明。所有处理后的图像会保存在 output 目录下,方便查看和比较效果。
使用方法:
- 确保在代码所在目录中有 tiger.jpeg 图片
- 运行代码,将会在 output 文件夹中生成各种处理后的图像
- 根据输出的信息查看不同处理效果
如果以上代码执行成功,终端输出结果为:
操作说明
1. 打开图像并获取基本信息
实例
# 打开图像文件
img = Image.open("tiger.jpeg")
# 获取和显示图像信息
print(f"图像格式: {img.format}") # 例如: JPEG, PNG等
print(f"图像大小 (宽x高): {img.size}") # 例如: (800, 600)
print(f"图像模式: {img.mode}") # 例如: RGB, RGBA, L(灰度)等
img = Image.open("tiger.jpeg")
# 获取和显示图像信息
print(f"图像格式: {img.format}") # 例如: JPEG, PNG等
print(f"图像大小 (宽x高): {img.size}") # 例如: (800, 600)
print(f"图像模式: {img.mode}") # 例如: RGB, RGBA, L(灰度)等
详细说明:
Image.open()
函数用于打开图像文件,参数是图像文件的路径img.format
显示图像的格式(如JPEG, PNG, GIF等)img.size
返回一个包含宽度和高度的元组,如(800, 600)img.mode
显示图像的颜色模式:RGB
: 彩色图像RGBA
: 带透明通道的彩色图像L
: 灰度图像1
: 二值图像(黑白)
2. 调整图像大小
实例
# 调整图像尺寸为400x300像素
resized_img = img.resize((400, 300))
# 保存调整大小后的图像
resized_img.save("output/resized_tiger.jpg")
resized_img = img.resize((400, 300))
# 保存调整大小后的图像
resized_img.save("output/resized_tiger.jpg")
详细说明:
resize()
方法用于改变图像尺寸,参数是一个包含新宽度和高度的元组- 这个方法不会修改原始图像,而是返回一个新的图像对象
- 默认情况下使用最近邻插值法,对于更高质量的调整可以添加参数:
resized_img = img.resize((400, 300), Image.LANCZOS)
save()
方法将处理后的图像保存到指定路径
3. 裁剪图像
实例
# 获取原图尺寸
width, height = img.size
# 定义裁剪区域 (左, 上, 右, 下)
crop_area = (width//4, height//4, 3*width//4, 3*height//4) # 裁剪中间区域
# 执行裁剪
cropped_img = img.crop(crop_area)
# 保存裁剪后的图像
cropped_img.save("output/cropped_tiger.jpg")
width, height = img.size
# 定义裁剪区域 (左, 上, 右, 下)
crop_area = (width//4, height//4, 3*width//4, 3*height//4) # 裁剪中间区域
# 执行裁剪
cropped_img = img.crop(crop_area)
# 保存裁剪后的图像
cropped_img.save("output/cropped_tiger.jpg")
详细说明:
crop()
方法用于从图像中提取一个矩形区域- 裁剪区域由元组
(left, upper, right, lower)
定义:left
: 左边界的x坐标upper
: 上边界的y坐标right
: 右边界的x坐标lower
: 下边界的y坐标
- 在示例中,我们裁剪了图像的中心部分(1/4到3/4区域)
width//4
中的//
是整数除法,确保结果是整数
4. 旋转图像
实例
# 旋转图像45度,并扩展画布以显示完整图像
rotated_img = img.rotate(45, expand=True)
# 保存旋转后的图像
rotated_img.save("output/rotated_tiger.jpg")
rotated_img = img.rotate(45, expand=True)
# 保存旋转后的图像
rotated_img.save("output/rotated_tiger.jpg")
详细说明:
rotate()
方法用于旋转图像,第一个参数是旋转角度(逆时针,以度为单位)expand=True
参数会扩展输出图像的尺寸,以容纳整个旋转后的图像- 如果不设置
expand=True
,旋转后的图像会被裁剪以适应原始尺寸 - 默认情况下,旋转中心是图像的中心点
5. 翻转图像
实例
# 水平翻转(左右镜像)
h_flipped = img.transpose(Image.FLIP_LEFT_RIGHT)
h_flipped.save("output/horizontal_flip_tiger.jpg")
# 垂直翻转(上下镜像)
v_flipped = img.transpose(Image.FLIP_TOP_BOTTOM)
v_flipped.save("output/vertical_flip_tiger.jpg")
h_flipped = img.transpose(Image.FLIP_LEFT_RIGHT)
h_flipped.save("output/horizontal_flip_tiger.jpg")
# 垂直翻转(上下镜像)
v_flipped = img.transpose(Image.FLIP_TOP_BOTTOM)
v_flipped.save("output/vertical_flip_tiger.jpg")
详细说明:
transpose()
方法用于图像的翻转和转置操作Image.FLIP_LEFT_RIGHT
常量表示水平翻转(左右镜像)Image.FLIP_TOP_BOTTOM
常量表示垂直翻转(上下镜像)- 除了翻转,还可以使用其他常量如
Image.ROTATE_90
,Image.ROTATE_180
,Image.ROTATE_270
进行旋转
6. 转换颜色模式
实例
# 将图像转换为灰度图
grayscale_img = img.convert('L')
# 保存灰度图像
grayscale_img.save("output/grayscale_tiger.jpg")
grayscale_img = img.convert('L')
# 保存灰度图像
grayscale_img.save("output/grayscale_tiger.jpg")
详细说明:
convert()
方法用于更改图像的模式(颜色空间)- 参数
'L'
表示转换为灰度图像(Luminance) - 其他常用的模式包括:
'RGB'
: 三通道彩色'RGBA'
: 四通道彩色(带透明度)'CMYK'
: 印刷四色模式'1'
: 二值图像(纯黑白)
- 转换模式可以减小文件大小或为特定处理做准备
7. 应用图像滤镜
实例
# 应用模糊滤镜
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.save("output/blurred_tiger.jpg")
# 应用边缘增强滤镜
edge_img = img.filter(ImageFilter.EDGE_ENHANCE)
edge_img.save("output/edge_enhanced_tiger.jpg")
# 应用轮廓滤镜
contour_img = img.filter(ImageFilter.CONTOUR)
contour_img.save("output/contour_tiger.jpg")
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.save("output/blurred_tiger.jpg")
# 应用边缘增强滤镜
edge_img = img.filter(ImageFilter.EDGE_ENHANCE)
edge_img.save("output/edge_enhanced_tiger.jpg")
# 应用轮廓滤镜
contour_img = img.filter(ImageFilter.CONTOUR)
contour_img.save("output/contour_tiger.jpg")
详细说明:
filter()
方法用于对图像应用各种预定义的滤镜效果ImageFilter.BLUR
会使图像模糊,类似于柔焦效果ImageFilter.EDGE_ENHANCE
增强图像的边缘,使轮廓更明显ImageFilter.CONTOUR
寻找图像的轮廓线,产生类似素描的效果- 其他常用滤镜还有:
ImageFilter.SHARPEN
: 锐化图像ImageFilter.EMBOSS
: 浮雕效果ImageFilter.FIND_EDGES
: 寻找边缘ImageFilter.SMOOTH
: 平滑图像
- 也可以创建自定义滤镜,如高斯模糊:
img.filter(ImageFilter.GaussianBlur(radius=2))
8. 调整图像属性(亮度、对比度、锐度)
实例
# 增加亮度(1.5表示亮度增加50%)
brightness = ImageEnhance.Brightness(img)
bright_img = brightness.enhance(1.5)
bright_img.save("output/brighter_tiger.jpg")
# 增加对比度(1.5表示对比度增加50%)
contrast = ImageEnhance.Contrast(img)
contrast_img = contrast.enhance(1.5)
contrast_img.save("output/contrast_tiger.jpg")
# 增加锐度(2.0表示锐度增加100%)
sharpness = ImageEnhance.Sharpness(img)
sharp_img = sharpness.enhance(2.0)
sharp_img.save("output/sharper_tiger.jpg")
brightness = ImageEnhance.Brightness(img)
bright_img = brightness.enhance(1.5)
bright_img.save("output/brighter_tiger.jpg")
# 增加对比度(1.5表示对比度增加50%)
contrast = ImageEnhance.Contrast(img)
contrast_img = contrast.enhance(1.5)
contrast_img.save("output/contrast_tiger.jpg")
# 增加锐度(2.0表示锐度增加100%)
sharpness = ImageEnhance.Sharpness(img)
sharp_img = sharpness.enhance(2.0)
sharp_img.save("output/sharper_tiger.jpg")
详细说明:
ImageEnhance
模块提供了几种增强器类,用于调整图像的不同属性- 每个增强器首先需要用图像对象初始化
enhance()
方法接受一个参数,表示增强的程度:- 值为1.0表示原始图像不变
- 值大于1.0表示增强效果(例如1.5表示增加50%)
- 值小于1.0表示减弱效果(例如0.5表示减少50%)
- 除了上面展示的三种增强器外,还有
ImageEnhance.Color
用于调整色彩饱和度
9. 添加文字到图像
实例
# 创建一个图像副本用于绘制
text_img = img.copy()
# 创建绘图对象
draw = ImageDraw.Draw(text_img)
# 尝试加载字体(如果不可用则使用默认字体)
try:
# 加载系统字体,大小为36像素
font = ImageFont.truetype("arial.ttf", 36)
except IOError:
# 如果找不到指定字体,使用默认字体
font = ImageFont.load_default()
# 在图像上添加文字
draw.text((10, 10), "Tiger", fill=(255, 255, 255), font=font)
# 保存添加文字后的图像
text_img.save("output/text_tiger.jpg")
text_img = img.copy()
# 创建绘图对象
draw = ImageDraw.Draw(text_img)
# 尝试加载字体(如果不可用则使用默认字体)
try:
# 加载系统字体,大小为36像素
font = ImageFont.truetype("arial.ttf", 36)
except IOError:
# 如果找不到指定字体,使用默认字体
font = ImageFont.load_default()
# 在图像上添加文字
draw.text((10, 10), "Tiger", fill=(255, 255, 255), font=font)
# 保存添加文字后的图像
text_img.save("output/text_tiger.jpg")
详细说明:
copy()
方法创建原图像的一个副本,避免修改原始图像ImageDraw.Draw()
创建一个绘图对象,用于在图像上绘制ImageFont.truetype()
用于加载TrueType字体:- 第一个参数是字体文件路径(如"arial.ttf")
- 第二个参数是字体大小(以像素为单位)
draw.text()
用于在图像上绘制文字:- 第一个参数
(10, 10)
是文字的位置坐标(左上角) - 第二个参数是要绘制的文本内容
fill
参数指定文字颜色,这里是白色(255, 255, 255)
font
参数指定使用的字体
- 第一个参数
- 使用
try-except
块处理可能的字体加载失败情况
10. 合并图像(简单拼接)
实例
# 获取原始图像尺寸
width, height = img.size
# 创建一个新的空白图像,宽度是原图的两倍
merged_img = Image.new('RGB', (width*2, height))
# 将原图粘贴到左侧
merged_img.paste(img, (0, 0))
# 将灰度图转换为RGB并粘贴到右侧
merged_img.paste(grayscale_img.convert('RGB'), (width, 0))
# 保存合并后的图像
merged_img.save("output/merged_tiger.jpg")
width, height = img.size
# 创建一个新的空白图像,宽度是原图的两倍
merged_img = Image.new('RGB', (width*2, height))
# 将原图粘贴到左侧
merged_img.paste(img, (0, 0))
# 将灰度图转换为RGB并粘贴到右侧
merged_img.paste(grayscale_img.convert('RGB'), (width, 0))
# 保存合并后的图像
merged_img.save("output/merged_tiger.jpg")
详细说明:
Image.new()
创建一个新的空白图像:- 第一个参数是颜色模式,这里是
'RGB'
- 第二个参数是图像尺寸,这里是原图宽度的两倍和原图高度
- 第一个参数是颜色模式,这里是
paste()
方法将一个图像粘贴到另一个图像上:- 第一个参数是要粘贴的图像
- 第二个参数是粘贴位置的坐标 (左上角)
convert('RGB')
将灰度图转换为RGB模式,因为只能将相同模式的图像粘贴到一起- 这种方法可以用来创建拼贴画、并排比较或创建照片集
11. 保存为不同格式和质量
实例
# 保存为PNG格式(无损压缩)
img.save("output/tiger.png")
# 保存为BMP格式(无压缩)
img.save("output/tiger.bmp")
# 保存为高质量JPEG(质量95%)
img.save("output/tiger_high_quality.jpg", quality=95)
# 保存为低质量JPEG(质量10%)
img.save("output/tiger_low_quality.jpg", quality=10)
img.save("output/tiger.png")
# 保存为BMP格式(无压缩)
img.save("output/tiger.bmp")
# 保存为高质量JPEG(质量95%)
img.save("output/tiger_high_quality.jpg", quality=95)
# 保存为低质量JPEG(质量10%)
img.save("output/tiger_low_quality.jpg", quality=10)
详细说明:
save()
方法根据文件扩展名自动确定保存格式- 不同格式的特点:
PNG
: 无损压缩,支持透明度,适合图标、截图等JPEG
: 有损压缩,适合照片,不支持透明度BMP
: 无压缩,文件较大,但保留所有信息GIF
: 支持动画,最多256色
- 对于JPEG格式,可以通过
quality
参数控制压缩质量:- 值范围从1(最差质量,最小文件)到95(最佳质量,较大文件)
- 默认值通常为75
- 不同质量设置可以帮助平衡图像质量和文件大小
12. 创建输出目录
实例
# 确保输出目录存在
output_dir = "output"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
output_dir = "output"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
详细说明:
os.path.exists()
检查指定的目录是否存在os.makedirs()
创建目录,如果它不存在的话- 这段代码确保我们有一个地方保存处理后的图像
- 把所有生成的图像放在一个单独的目录中,可以更好地组织项目
点我分享笔记