Pillow 是 Python 中最主流的图像处理库,属于 PIL(Python Imaging Library)的分支和增强版本。它提供了对多种图像格式的支持与操作功能,可以轻松完成图像打开、裁剪、缩放、旋转、滤镜、绘图、文字添加、格式转换等图像处理任务。

安装 Pillow 库:

pip install pillow

常见应用场景:

(1)图像格式转换(如 PNG 转 JPEG)。

(2)图像缩放、裁剪、旋转、翻转等几何变换。

(3)图像滤镜、边缘检测、模糊、锐化等处理。

(4)图像合成与拼接。

(5)添加文字、水印或绘制图形。

(6)批量图像处理与自动化图像任务。

  ◆  ◆

核心概念

1、Image 模块

图像加载与保存的核心类。

2、ImageDraw

用于绘制线条、矩形、圆形等图形。

3、ImageFont

用于设置绘图字体(常结合 ImageDraw 使用)。

4、ImageFilter

图像滤镜(模糊、边缘增强等)。

5、颜色模式

如 RGB、RGBA、L(灰度)、CMYK 等。

6、文件格式支持

包括 JPEG、PNG、GIF、BMP、TIFF 等。

  ◆  ◆

应用举例

例 1:打开、查看与保存图像

from PIL import Image
img = Image.open("example.png")img.show()  # 使用默认图像查看器打开img.save("output.jpg")  # 转换格式并保存

例 2:图像缩放与裁剪

from PIL import Image
img = Image.open("example.jpg")resized = img.resize((200, 200))cropped = img.crop((50, 50, 250, 250))  # (left, upper, right, lower)resized.save("resized.jpg")cropped.save("cropped.jpg")

例 3:旋转与翻转

from PIL import Image
img = Image.open("example.jpg")rotated = img.rotate(45)  # 逆时针旋转flipped = img.transpose(Image.FLIP_LEFT_RIGHT)rotated.save("rotated.jpg")flipped.save("flipped.jpg")

例 4:添加文字水印

from PIL import Image, ImageDraw, ImageFont
img = Image.open("example.jpg")draw = ImageDraw.Draw(img)font = ImageFont.truetype("arial.ttf", 36)draw.text((50, 50), "Watermark", font=font, fill="white")img.save("with_text.jpg")

例 5:使用滤镜处理图像

from PIL import Image, ImageFilter
img = Image.open("example.jpg")blurred = img.filter(ImageFilter.GaussianBlur(radius=2))sharpened = img.filter(ImageFilter.SHARPEN)blurred.save("blurred.jpg")sharpened.save("sharpened.jpg")

  ◆  ◆

常用函数速览

Image.open(fp)

打开图像文件。

参数:

fp:文件路径或类文件对象

返回:Image 对象

Image.save(fp, format=None)

保存图像到文件。

参数:

fp:保存路径

format:保存格式(可选,如 "JPEG"、"PNG")

返回:无

Image.resize(size)

按给定尺寸缩放图像。

参数:

size:二元组 (width, height)

返回:新的 Image 对象

Image.crop(box)

裁剪图像区域。

参数:

box:四元组 (left, upper, right, lower)

返回:裁剪后的 Image 对象

Image.rotate(angle, expand=False)

旋转图像。

参数:

angle:角度(逆时针)

expand:是否自动扩展图像边界

返回:旋转后的图像

Image.filter(filter)

对图像应用滤镜。

参数:

filter:如 ImageFilter.BLUR, ImageFilter.SHARPEN

返回:处理后的图像

ImageDraw.Draw(image)

创建可在图像上绘图的对象。

参数:

image:一个 Image 实例

返回:ImageDraw 对象

ImageFont.truetype(font, size)

加载指定字体文件。

参数:

font:字体文件路径,如 "arial.ttf"

size:字体大小

返回:ImageFont 对象

Image.convert(mode)

转换图像模式(如 RGB → L)。

参数:

mode:目标模式(如 "RGB"、"L")

返回:转换后的图像

Image.show()

使用系统默认应用程序打开图像。

返回:无

  ◆  ◆

补充说明

1、Pillow 图像处理中的坐标系原点在左上角,向右为 x 增大,向下为 y 增大。

2、图像模式:

"RGB":彩色图像

"RGBA":含透明度

"L":灰度图像

"1":二值图像

"P":调色板图像

3、滤镜常用示例(位于 PIL.ImageFilter 模块中):

BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EMBOSS、FIND_EDGES、SHARPEN、SMOOTH 等等。

图片

“点赞有美意,赞赏是鼓励”

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐