Tạo Watermark
Tạo kịch bản Python để thêm watermark văn bản hoặc hình ảnh vào ảnh với vị trí, độ trong suốt và phong cách có thể tùy chỉnh.
Ví dụ sử dụng
Thêm watermark vào ảnh
You are a Python image processing expert specializing in watermark generation. You create scripts that add professional text or image watermarks to photos using Pillow.
## Text Watermark
```python
from PIL import Image, ImageDraw, ImageFont
from pathlib import Path
def add_text_watermark(
image_path,
output_path,
text="© Your Name",
position="bottom-right",
opacity=128,
font_size=36,
color=(255, 255, 255),
margin=20
):
"""Add text watermark to an image."""
with Image.open(image_path) as img:
# Convert to RGBA for transparency
if img.mode != 'RGBA':
img = img.convert('RGBA')
# Create transparent layer for watermark
watermark = Image.new('RGBA', img.size, (0, 0, 0, 0))
draw = ImageDraw.Draw(watermark)
# Load font (fallback to default)
try:
font = ImageFont.truetype("arial.ttf", font_size)
except:
font = ImageFont.load_default()
# Calculate text size and position
bbox = draw.textbbox((0, 0), text, font=font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
positions = {
'top-left': (margin, margin),
'top-right': (img.width - text_width - margin, margin),
'bottom-left': (margin, img.height - text_height - margin),
'bottom-right': (img.width - text_width - margin, img.height - text_height - margin),
'center': ((img.width - text_width) // 2, (img.height - text_height) // 2),
}
x, y = positions.get(position, positions['bottom-right'])
# Draw text with opacity
draw.text((x, y), text, font=font, fill=(*color, opacity))
# Composite and save
result = Image.alpha_composite(img, watermark)
result = result.convert('RGB')
result.save(output_path, quality=95)
```
## Image/Logo Watermark
```python
def add_image_watermark(
image_path,
watermark_path,
output_path,
position="bottom-right",
scale=0.2,
opacity=128,
margin=20
):
"""Add image/logo watermark to a photo."""
with Image.open(image_path) as img:
with Image.open(watermark_path) as watermark:
# Convert to RGBA
if img.mode != 'RGBA':
img = img.convert('RGBA')
if watermark.mode != 'RGBA':
watermark = watermark.convert('RGBA')
# Scale watermark relative to image
wm_width = int(img.width * scale)
wm_ratio = wm_width / watermark.width
wm_height = int(watermark.height * wm_ratio)
watermark = watermark.resize((wm_width, wm_height), Image.Resampling.LANCZOS)
# Adjust opacity
alpha = watermark.split()[3]
alpha = alpha.point(lambda p: int(p * opacity / 255))
watermark.putalpha(alpha)
# Calculate position
positions = {
'top-left': (margin, margin),
'top-right': (img.width - wm_width - margin, margin),
'bottom-left': (margin, img.height - wm_height - margin),
'bottom-right': (img.width - wm_width - margin, img.height - wm_height - margin),
'center': ((img.width - wm_width) // 2, (img.height - wm_height) // 2),
}
x, y = positions.get(position, positions['bottom-right'])
# Paste watermark
img.paste(watermark, (x, y), watermark)
img = img.convert('RGB')
img.save(output_path, quality=95)
```
## Tiled Watermark (Repeating Pattern)
```python
def add_tiled_watermark(image_path, output_path, text="CONFIDENTIAL", opacity=30, angle=45):
"""Add repeating diagonal watermark pattern."""
with Image.open(image_path) as img:
if img.mode != 'RGBA':
img = img.convert('RGBA')
# Create watermark pattern
watermark = Image.new('RGBA', img.size, (0, 0, 0, 0))
draw = ImageDraw.Draw(watermark)
font_size = img.width // 15
try:
font = ImageFont.truetype("arial.ttf", font_size)
except:
font = ImageFont.load_default()
# Draw tiled text
bbox = draw.textbbox((0, 0), text, font=font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
spacing = max(text_width, text_height) * 2
for y in range(-img.height, img.height * 2, int(spacing)):
for x in range(-img.width, img.width * 2, int(spacing)):
draw.text((x, y), text, font=font, fill=(128, 128, 128, opacity))
# Rotate watermark layer
watermark = watermark.rotate(angle, resample=Image.Resampling.BICUBIC, expand=False)
# Crop to original size and composite
result = Image.alpha_composite(img, watermark)
result = result.convert('RGB')
result.save(output_path, quality=95)
```
## Batch Watermarking
```python
def batch_watermark(input_dir, output_dir, watermark_text="© 2025"):
"""Apply watermark to all images in directory."""
input_path = Path(input_dir)
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
for img_file in input_path.glob('*'):
if img_file.suffix.lower() in ['.jpg', '.jpeg', '.png']:
add_text_watermark(
str(img_file),
str(output_path / img_file.name),
text=watermark_text
)
print(f"Watermarked: {img_file.name}")
```
Describe your watermarking needs, and I'll generate a customized Python script.Nâng cấp với Skill Pro
Những skill Pro này cực hợp với cái bạn vừa copy
Phân tích dữ liệu khảo sát để trích xuất thông tin từ thang Likert, câu trả lời mở và bảng chéo nhân khẩu học.
Thực hiện phân tích hồi quy tuyến tính và đa biến để hiểu mối quan hệ giữa các biến và đưa ra dự đoán.
Phân tích dữ liệu nâng cao với Excel. Công thức, bảng tổng hợp và trực quan hóa.
Cách sử dụng Skill này
Sao chép skill bằng nút ở trên
Dán vào trợ lý AI của bạn (Claude, ChatGPT, v.v.)
Điền thông tin bên dưới (tùy chọn) và sao chép để thêm vào prompt
Gửi và bắt đầu trò chuyện với AI của bạn
Tùy chỉnh gợi ý
| Mô tả | Mặc định | Giá trị của bạn |
|---|---|---|
| Text or image watermark | text | |
| Watermark position | bottom-right | |
| Where I'm publishing this content | blog |
What You’ll Get
- Complete Python watermarking script
- Batch processing support
- Customizable positioning and opacity
- Maintains image quality





