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 Mẫu Pro
Những mẫu skill Pro này cực hợp với cái bạn vừa copy
Phân tích bất động sản cho thuê như nhà đầu tư chuyên nghiệp. Tính cap rate, lợi nhuận tiền mặt, NOI và ROI với framework thẩm định chi tiết.
Tạo kịch bản chuyên nghiệp để đối phó với sếp lộn xộn, mơ hồ hay dễ nổi cáu. Có email để lại dấu vết, tin nhắn ép ưu tiên và cập nhật SBAR tạo sự rõ …
Tạo phản hồi thông minh, trung lập hoặc chiến lược cho troll và bình luận tiêu cực, giúp bạn không nổi nóng mà vẫn giữ tương tác. Bảo vệ sức khỏe tinh …
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