使用Python给图片添加水印

本文介绍如何使用Python的PIL库为大量图片快速添加水印。通过代码示例,展示了如何选择字体、设定文字位置及颜色,实现图片水印的自动化添加。

话说最近在学前端,发现不少网页的尾部有加上版权信息说明,想想觉得自己相机中的照片也得拥有姓名,修图软件一个一个加太麻烦了,不如Python一小段代码来得快。先放两张图展示一下效果哈哈哈哈。

在这里插入图片描述
在这里插入图片描述

添加水印首先我们把文字的字体选好,主要用到的是Python的PIL库。
字体文件在电脑的如下图标出的位置(C:\Windows\Fonts),选择自己想要的字体复制到项目文件。当然,也可以在网上下载其他的花里胡哨的字体。
在这里插入图片描述
现在来看代码。

import os
from PIL import Image,ImageDraw,ImageFont

def watermark(filename, text,pic):
    # 实例化图片对象
    img = Image.open(filename)
    w
### 使用Python给图像添加水印 #### Pillow库的应用 在Python中,可以借助Pillow库来处理图像并为其添加水印。作为最流行的图像处理库之一,Pillow不仅支持多种图像格式,还提供了一系列丰富的图像处理功能[^1]。 ```python from PIL import Image, ImageDraw, ImageFont def add_text_watermark(image_path, text, output_image_path): image = Image.open(image_path).convert("RGBA") txt_layer = Image.new('RGBA', image.size, (255, 255, 255, 0)) draw = ImageDraw.Draw(txt_layer) font_size = int(min(image.size) / 20) try: font = ImageFont.truetype("arial.ttf", font_size) except IOError: font = ImageFont.load_default() text_width, text_height = draw.textsize(text, font=font) position = ((image.width - text_width)/2, (image.height - text_height)/2) draw.text(position, text=text, fill=(255, 255, 255, 80), font=font) combined = Image.alpha_composite(image, txt_layer) combined.save(output_image_path) ``` 这段代码展示了如何通过`ImageDraw.Draw.text()`方法,在指定位置绘制带有透明度的文字到图片上,从而实现文字形式的水印效果[^2]。 #### OpenCV库的操作方式 除了Pillow外,OpenCV也是一个强大的工具用于图像处理。对于想要更深入了解底层操作的人来说,使用OpenCV来进行图像基本运算如add(), subtract(), multiply(), divide()以及逻辑运算也可以达到为图片半透明图层的效果,进而完成水印的功能[^3]。 ```python import cv2 import numpy as np def overlay_transparent(background_img, img_to_overlay_t, x, y, overlay_size=None): bg_img = background_img.copy() # resize the image to be overlaid if size is specified if overlay_size is not None: img_to_overlay_t = cv2.resize(img_to_overlay_t.copy(), overlay_size) b,g,r,a = cv2.split(img_to_overlay_t) mask = a.astype(float)/255.0 inv_mask = 1-mask for c in range(0,3): bg_img[y:y+img_to_overlay_t.shape[0], x:x+img_to_overlay_t.shape[1],c]=(inv_mask * bg_img[y:y+img_to_overlay_t.shape[0], x:x+img_to_overlay_t.shape[1],c ] + mask * img_to_overlay_t[:,:,c]) return bg_img ``` 此函数实现了将一张具有alpha通道(即透明信息)的PNG文件叠至另一张背景图片之上,形成视觉上的水印效果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demonslzh6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值