Python 图片格式转换
在 Python 中,进行图片格式转换可以使用 Pillow
库(PIL)。Pillow
是 Python Imaging Library(PIL)的一个友好分支。以下是如何使用 Pillow
库进行图片格式转换的详细步骤。
安装 Pillow
如果还没有安装 Pillow
,可以使用 pip
命令来安装:
pip install pillow
使用 Pillow 进行图片格式转换
以下是一个示例,展示如何使用 Pillow
将 JPEG 格式的图片转换为 PNG 格式。
示例:JPEG 转 PNG
from PIL import Image
def convert_image(input_path, output_path):
# 打开图片
with Image.open(input_path) as img:
# 保存为新的格式
img.save(output_path)
# 示例调用
convert_image('input.jpg', 'output.png')
在这个示例中,input.jpg
是输入的 JPEG 格式图片,output.png
是输出的 PNG 格式图片。
示例:任意格式转换
可以将图片转换为任意格式,只需更改输出文件的扩展名。例如,将 PNG 转换为 BMP:
from PIL import Image
def convert_image(input_path, output_path):
# 打开图片
with Image.open(input_path) as img:
# 保存为新的格式
img.save(output_path)
# 示例调用
convert_image('input.png', 'output.bmp')
批量图片格式转换
如果需要批量转换文件夹中的图片格式,可以使用以下示例:
import os
from PIL import Image
def batch_convert_images(input_directory, output_directory, target_format):
if not os.path.exists(output_directory):
os.makedirs(output_directory)
for filename in os.listdir(input_directory):
if filename.endswith(('.jpg', '.jpeg', '.png', '.bmp', '.gif')):
input_path = os.path.join(input_directory, filename)
output_filename = os.path.splitext(filename)[0] + '.' + target_format
output_path = os.path.join(output_directory, output_filename)
try:
with Image.open(input_path) as img:
img.save(output_path)
print(f"{input_path} 已转换为 {output_path}")
except Exception as e:
print(f"转换 {input_path} 时发生错误: {e}")
# 示例调用
batch_convert_images('input_directory', 'output_directory', 'png')
在这个示例中,input_directory
是包含要转换图片的文件夹,output_directory
是保存转换后图片的文件夹,target_format
是目标图片格式。
高级选项
保持图片质量
在保存图片时,可以指定图片质量参数。例如,保存 JPEG 格式时,可以设置质量参数:
from PIL import Image
def convert_image(input_path, output_path, quality=85):
# 打开图片
with Image.open(input_path) as img:
# 保存为新的格式并指定质量
img.save(output_path, quality=quality)
# 示例调用
convert_image('input.jpg', 'output.jpg', quality=90)
转换为灰度图像
在转换图片格式时,也可以将图片转换为灰度图像:
from PIL import Image
def convert_to_grayscale(input_path, output_path):
# 打开图片
with Image.open(input_path) as img:
# 转换为灰度图像
grayscale_img = img.convert('L')
# 保存为新的格式
grayscale_img.save(output_path)
# 示例调用
convert_to_grayscale('input.jpg', 'output.png')
总结
使用 Pillow
库,Python 可以轻松实现图片格式的转换。无论是单张图片的格式转换,还是批量转换文件夹中的图片格式,Pillow
都提供了丰富的功能和灵活的接口。通过合理使用这些功能,可以大大提高图像处理的效率和效果。
License:
CC BY 4.0