您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。