# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。