Pillow
是 Python Imaging Library (PIL) 的一个分支,提供了强大的图像处理能力。它支持广泛的图像格式,并且提供了丰富的功能来处理图像,包括读取、写入、转换、过滤和增强图像。
你可以通过 pip 来安装 Pillow:
bashpip install pillow
打开图像:
pythonfrom PIL import Image
# 打开图像文件
img = Image.open('example.jpg')
img.show() # 显示图像
保存图像:
python# 保存图像到新文件
img.save('output.png')
获取图像尺寸:
pythonwidth, height = img.size
print(f"Width: {width}, Height: {height}")
获取图像模式(如 'RGB', 'L' 等):
pythonmode = img.mode
print(f"Mode: {mode}")
获取图像信息:
pythoninfo = img.info
print(f"Info: {info}")
裁剪图像的某一部分:
python# 定义裁剪区域 (left, upper, right, lower)
box = (100, 100, 400, 400)
cropped_img = img.crop(box)
cropped_img.show()
缩放图像:
python# 缩放图像为新的大小 (width, height)
resized_img = img.resize((300, 300))
resized_img.show()
旋转图像:
python# 旋转图像角度 (逆时针方向)
rotated_img = img.rotate(45)
rotated_img.show()
应用内置滤镜效果:
pythonfrom PIL import ImageFilter
# 应用模糊滤镜
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.show()
# 应用边缘检测滤镜
edges_img = img.filter(ImageFilter.FIND_EDGES)
edges_img.show()
使用 ImageEnhance
模块进行图像增强:
pythonfrom PIL import ImageEnhance
# 增强对比度
enhancer = ImageEnhance.Contrast(img)
enhanced_img = enhancer.enhance(2.0)
enhanced_img.show()
# 增强亮度
brightness_enhancer = ImageEnhance.Brightness(img)
brighter_img = brightness_enhancer.enhance(1.5)
brighter_img.show()
使用 ImageDraw
模块在图像上绘制图形:
pythonfrom PIL import ImageDraw
draw = ImageDraw.Draw(img)
draw.rectangle([100, 100, 200, 200], outline="red", width=3)
draw.text((50, 50), "Hello, Pillow!", fill="blue")
img.show()
在图像上添加文本:
pythonfrom PIL import ImageFont
# 加载字体
font = ImageFont.truetype("arial.ttf", size=40)
draw = ImageDraw.Draw(img)
draw.text((50, 50), "Hello, Pillow!", font=font, fill="blue")
img.show()
将图像从一种颜色模式转换为另一种:
python# 将图像转换为灰度
gray_img = img.convert('L')
gray_img.show()
以下是一个综合示例,展示了如何打开图像、调整其大小、应用滤镜并保存结果:
pythonfrom PIL import Image, ImageFilter, ImageEnhance
# 打开图像
img = Image.open('example.jpg')
# 调整大小
resized_img = img.resize((600, 600))
# 应用模糊滤镜
blurred_img = resized_img.filter(ImageFilter.BLUR)
# 增强对比度
enhancer = ImageEnhance.Contrast(blurred_img)
final_img = enhancer.enhance(1.5)
# 保存结果
final_img.save('processed_image.jpg')
final_img.show()