Python Pillow 库实现图片基础处理:划线、文字、水印与裁剪

沈亦白
沈亦白
发布时间:2026-10-14| 6人浏览过
原创

本文介绍如何使用 Python 的 Pillow 库进行图片基础处理。内容包括安装依赖、绘制线条、添加文字与图片水印(含缩放与定位)、应用模糊滤镜以及处理裁剪时的透明填充问题。通过具体代码示例,展示如何高效实现常见的图像编辑需求。

首先需要安装 Pillow 库,这是 Python 中处理图像的核心工具。


pip install Pillow

利用 Pillow 可以在图片上绘制直线,例如绘制对角线。


from PIL import Image, ImageDraw
im = Image.open("blur.jpg")
draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)
del draw
# write to stdout
im.save("blur.jpg", "PNG")

在图片中添加文字信息,如水印或标注。

有时我们需要在图片上添加文字,例如制作水印。只需指定本地字体文件路径,即可直接在图像上渲染文字。


from PIL import ImageFont, ImageDraw,Image, ImageDraw
image = Image.open("image.png").convert('RGBA')
txt=Image.new('RGBA', image.size, (0,0,0,0))
font=ImageFont.truetype("c:/Windows/fonts/Tahoma.ttf", 20)
draw=ImageDraw.Draw(txt)
draw.text((txt.size[0]-100, txt.size[1]-30), "linshiyingdi", font=font)
out=Image.alpha_composite(image, txt)
out.save("imageWithText.png", "png")
out.show()

除了文字,还可以将其他图片作为水印叠加到原图上。

如果文字水印视觉效果不佳,可以改用图片水印,操作同样简便。


from PIL import ImageFont, ImageDraw, Image, ImageDraw

image = Image.open("image.png")
logo = Image.open("logo.png")
layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
layer.paste(logo, (50, 60))
out = Image.composite(layer, image, layer)
out.save("imageWithLogo.png", "png")
out.show()

当水印图片尺寸过大时,可以使用 Pillow 自带的 thumbnail 方法对其进行缩小处理,以适应原图大小。


from PIL import ImageFont, ImageDraw, Image, ImageDraw

image = Image.open("image.png")
logo = Image.open("logo.png")
logo.thumbnail((200, 100))
layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
layer.paste(logo, (50, 60))
out = Image.composite(layer, image, layer)
out.save("imageWithLogo.png", "png")
out.show()

如图所示,将缩小后的水印图片放置在左上角,且大小比例协调,视觉效果良好。

Pillow 还可以对图片应用模糊等滤镜效果。


from PIL import Image, ImageFilter
# 打开一个jpg图像文件,直接放到当前路径下方便点:
im = Image.open('2822.jpg')
# 应用模糊滤镜:
im2 = im.filter(ImageFilter.BLUR)
im2.save('blur.jpg', 'jpeg')

在截取图片区域时,需要注意边界处理。


from PIL import Image
img = Image.open("image.png")
print(img.size)
cropped = img.crop((0, 0, 1303, 734))  # (left, upper, right, lower)
cropped.save("imageCropped.png")

如果原图尺寸小于指定的裁剪区域(如 1303x734),直接裁剪会产生透明填充,影响美观。因此,建议根据原图实际尺寸动态调整裁剪边界。


from PIL import Image

img = Image.open("image.png")
print(img.size)
right = 1303
lower = 734
if img.size[0] < 1303:
    right = img.size[0]
if img.size[1] < 734:
    lower = img.size[1]
cropped = img.crop((0, 0, right, lower))  # (left, upper, right, lower)
cropped.save("imageCropped.png")

通过上述判断逻辑,可以有效避免裁剪后出现白边或透明区域。

总结

正如“人生苦短,我用 Python”所言,借助强大的 Pillow 库,我们仅需少量代码即可实现多种图片处理功能。

以上是关于 Python 图片基础处理的详细介绍,更多相关内容欢迎查阅本站其他文章。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。