溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中怎么給圖片加水印

發布時間:2021-07-05 14:58:25 來源:億速云 閱讀:168 作者:Leah 欄目:大數據
# 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: 建議根據圖片尺寸調整
  • 高級功能:可添加旋轉、平鋪水印或陰影效果

方法二:使用OpenCV添加圖片水印

當需要添加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)

注意事項

  1. PNG水印需包含透明通道
  2. 大尺寸水印建議先縮放到合適比例
  3. 可通過cv2.addWeighted()實現更復雜的混合效果

進階技巧

  1. 批量處理:使用os.listdir()遍歷文件夾
  2. 動態調整:根據圖片亮度自動選擇水印顏色(黑/白)
  3. 安全防護:添加隱形數字水?。ㄐ枋褂肈CT/DWT等算法)

通過上述方法,您可以快速為圖片添加專業水印。根據實際需求選擇方案——簡單文字水印用Pillow,復雜圖像混合用OpenCV。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女