Python Pillow 库实现图片基础处理:划线、文字、水印与裁剪
本文介绍如何使用 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 图片基础处理的详细介绍,更多相关内容欢迎查阅本站其他文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









