您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Python中怎么给图片加水印
在数字内容创作中,为图片添加水印是保护版权和声明来源的常见需求。Python凭借丰富的图像处理库(如Pillow和OpenCV),可以轻松实现这一功能。本文将介绍两种主流方法,并提供完整代码示例。
---
## 方法一:使用Pillow库添加文字水印
Pillow(PIL Fork)是Python最常用的图像处理库之一,适合基础水印需求。
### 安装依赖
```bash
pip install pillow
from PIL import Image, ImageDraw, ImageFont
def add_text_watermark(input_path, output_path, text, font_size=20, opacity=0.5):
# 打开原始图片
base_image = Image.open(input_path).convert("RGBA")
# 创建透明水印层
watermark = Image.new("RGBA", base_image.size, (0,0,0,0))
draw = ImageDraw.Draw(watermark)
# 设置字体(需自行提供.ttf文件或使用默认字体)
try:
font = ImageFont.truetype("arial.ttf", font_size)
except:
font = ImageFont.load_default()
# 计算水印位置(右下角)
text_width, text_height = draw.textsize(text, font)
x = base_image.width - text_width - 10
y = base_image.height - text_height - 10
# 绘制半透明水印
draw.text((x, y), text, font=font, fill=(255,255,255, int(255*opacity)))
# 合并图层并保存
result = Image.alpha_composite(base_image, watermark)
result.save(output_path)
# 使用示例
add_text_watermark("input.jpg", "output.png", "© Your Brand", font_size=30)
opacity
: 透明度(0-1)font_size
: 建议根据图片尺寸调整当需要添加Logo等图像水印时,OpenCV更为合适。
pip install opencv-python numpy
import cv2
import numpy as np
def add_image_watermark(input_path, output_path, watermark_path, opacity=0.3):
# 读取图片和水印
base_img = cv2.imread(input_path)
watermark = cv2.imread(watermark_path, cv2.IMREAD_UNCHANGED)
# 调整水印尺寸(保持比例)
h, w = base_img.shape[:2]
scale = min(w//4, h//4) / max(watermark.shape[0], watermark.shape[1])
watermark = cv2.resize(watermark, (0,0), fx=scale, fy=scale)
# 计算位置(右下角)
x = w - watermark.shape[1] - 10
y = h - watermark.shape[0] - 10
# 透明混合
overlay = base_img.copy()
overlay[y:y+watermark.shape[0], x:x+watermark.shape[1]] = \
overlay[y:y+watermark.shape[0], x:x+watermark.shape[1]] * (1-opacity) + \
watermark[:,:,0:3] * opacity
cv2.imwrite(output_path, overlay)
# 使用示例
add_image_watermark("photo.jpg", "watermarked.jpg", "logo.png", opacity=0.5)
cv2.addWeighted()
实现更复杂的混合效果os.listdir()
遍历文件夹通过上述方法,您可以快速为图片添加专业水印。根据实际需求选择方案——简单文字水印用Pillow,复杂图像混合用OpenCV。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。