Pillow操作图像
Pillow 操作图像
Pillow 是 Jeffrey A.Clark 及其贡献者开发的友好 PIL 分支,PIL 是 Fredrik Lundh 及其贡献者开发的 Python 图像库,使用如下命令即可安装 Pillow 库。
pip install Pillow -i https://pypi.tuna.tsinghua.edu.cn/simple1.打开图像
要操作图像首先需要将图像加载到内存中,使用 show() 展示当前加载的图像,并打印图像的属性信息。
from PIL import Image
# 打开一个图像文件
image = Image.open("messi.jpg")
# 打印图像的属性信息
print("image format:{}",image.format)
print("image size:{}",image.size)
print("image mode:{}",image.mode)
# 显示图像
image.show()
打开的图像文件。

2.调整图像大小
可以缩放图像到指定的尺寸。
from PIL import Image
# 打开一个图像文件
image = Image.open("messi.jpg")
# 调整图像大小
resized_image = image.resize((800, 450))
# 显示调整后的图像
resized_image.show()
3.旋转和翻转图像
from PIL import Image
# 打开一个图像文件
image = Image.open("messi.jpg")
# 旋转图像(顺时针旋转 45 度)
rotated_image = image.rotate(45)
# 水平翻转图像
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)
# 显示旋转和翻转后的图像
rotated_image.show()
flipped_image.show()顺时针旋转 45 度的图像。

水平翻转的图像。

4.图像格式转换
这里可选择的格式有:
1,二值化模式(1-bit 像素,黑和白)L,灰度模式(8-bit 像素,黑白)P,调色板模式(8-bit 像素,使用调色板映射到任何其他模式)RGB,彩色模式(3x8-bit 像素,真彩)RGBA, 带透明度的彩色模式(4x8-bit 像素,真彩 + 透明度)CMYK,印刷模式(4x8-bit 像素)YCbCr,亮度/色度模式(3x8-bit 像素)LAB,CIE Lab 颜色空间HSV,色调/饱和度/亮度模式I,32 位整型像素F,32 位浮点型像素
from PIL import Image
# 打开一个图像文件
image = Image.open("messi.jpg")
# 将图像转换为调色板模式
gray_image = image.convert("P")
# 显示灰度图像
gray_image.show()
5.图像保存
处理后的图像可以保存为新文件:
gray_image.save("new.jpg")6.图像滤镜
Pillow 提供了多种滤镜,可以应用于图像,例如模糊、锐化等,有如下选项。
ImageFilter.BLUR,模糊滤镜ImageFilter.CONTOUR,轮廓滤镜ImageFilter.DETAIL,细节增强滤镜ImageFilter.EDGE_ENHANCE,边缘增强滤镜ImageFilter.EDGE_ENHANCE_MORE,更强的边缘增强滤镜ImageFilter.EMBOSS,浮雕滤镜ImageFilter.FIND_EDGES,边缘检测滤镜ImageFilter.SHARPEN,锐化滤镜ImageFilter.SMOOTH,平滑滤镜ImageFilter.SMOOTH_MORE,更强的平滑滤镜ImageFilter.GaussianBlur(radius=2),高斯模糊滤镜ImageFilter.UnsharpMask(radius=2, percent=150, threshold=3),非锐化掩模ImageFilter.MaxFilter(size=3),最大滤镜ImageFilter.MinFilter(size=3),最小滤镜ImageFilter.MedianFilter(size=3),中值滤镜ImageFilter.ModeFilter(size=3),模式滤镜
from PIL import ImageFilter, Image
# 打开一个图像文件
image = Image.open("messi.jpg")
# 应用模糊滤镜
blurred_image = image.filter(ImageFilter.BLUR)
# 显示模糊后的图像
blurred_image.show()
7.绘制和添加文本
在图像上绘制形状或添加文本,需要使用 ImageDraw 模块:
from PIL import ImageDraw, ImageFont
# 打开一个图像
image = Image.open("messi.jpg")
# 创建一个 ImageDraw 对象
draw = ImageDraw.Draw(image)
# 定义要绘制的文本及其位置
text = "GOAT, MESSI!"
position = (700, 400)
# 定义字体和大小 (这里需要一个 ttf 字体文件)
font = ImageFont.truetype("arial.ttf", 40)
# 绘制文本
draw.text(position, text, fill="white", font=font)
# 显示带文本的图像
image.show()