image-enhancement-suite

安装量: 70
排名: #10983

安装

npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill image-enhancement-suite

Professional image processing toolkit that handles common image tasks without requiring Photoshop or similar software. Process single images or entire folders with consistent, high-quality results.

Core Capabilities

  • Resize & Crop: Smart resizing with aspect ratio preservation, crop to specific dimensions

  • Watermark: Add text or image watermarks with positioning and opacity control

  • Color Correction: Brightness, contrast, saturation, sharpness adjustments

  • Format Conversion: Convert between PNG, JPEG, WebP, BMP, TIFF, GIF

  • Compression: Optimize file size with quality presets

  • Filters: Apply preset filters (grayscale, sepia, vintage, blur, sharpen)

  • Batch Processing: Process multiple images with same settings

Quick Start

from scripts.image_enhancer import ImageEnhancer

# Single image processing
enhancer = ImageEnhancer("photo.jpg")
enhancer.resize(width=800).sharpen(0.5).save("photo_enhanced.jpg")

# Batch processing
from scripts.image_enhancer import batch_process
batch_process(
    input_dir="raw_photos/",
    output_dir="processed/",
    operations=[
        ("resize", {"width": 1200}),
        ("watermark", {"text": "© 2024"}),
        ("compress", {"quality": 85})
    ]
)

Operations Reference

Resize

# By width (maintain aspect ratio)
enhancer.resize(width=800)

# By height (maintain aspect ratio)
enhancer.resize(height=600)

# Exact dimensions (may distort)
enhancer.resize(width=800, height=600, maintain_aspect=False)

# Fit within bounds
enhancer.resize(max_width=1200, max_height=800)

# Scale by percentage
enhancer.resize(scale=0.5)  # 50%

Crop

# Crop to specific dimensions from center
enhancer.crop(width=800, height=600)

# Crop with position
enhancer.crop(width=800, height=600, position='top-left')
# Positions: 'center', 'top-left', 'top-right', 'bottom-left', 'bottom-right'

# Crop to exact coordinates (left, top, right, bottom)
enhancer.crop(box=(100, 100, 900, 700))

# Smart crop (content-aware)
enhancer.smart_crop(width=800, height=600)

Watermark

# Text watermark
enhancer.watermark(
    text="© 2024 Company",
    position='bottom-right',
    opacity=0.5,
    font_size=24,
    color='white'
)

# Image watermark
enhancer.watermark(
    image="logo.png",
    position='bottom-right',
    opacity=0.3,
    scale=0.2  # 20% of main image width
)

# Tiled watermark
enhancer.watermark(
    text="DRAFT",
    tiled=True,
    opacity=0.1,
    rotation=45
)

Color Adjustments

# Individual adjustments (range: -1.0 to 1.0, 0 = no change)
enhancer.brightness(0.2)    # +20% brightness
enhancer.contrast(0.3)      # +30% contrast
enhancer.saturation(-0.2)   # -20% saturation
enhancer.sharpen(0.5)       # Sharpen

# Combined adjustment
enhancer.adjust(
    brightness=0.1,
    contrast=0.2,
    saturation=0.1,
    sharpen=0.3
)

# Auto-enhance
enhancer.auto_enhance()

Filters

# Apply preset filters
enhancer.filter('grayscale')
enhancer.filter('sepia')
enhancer.filter('vintage')
enhancer.filter('blur')
enhancer.filter('sharpen')
enhancer.filter('edge_enhance')
enhancer.filter('emboss')

# Custom blur
enhancer.blur(radius=2)

# Gaussian blur
enhancer.gaussian_blur(radius=3)

Format Conversion

# Convert to different format
enhancer.save("output.png")   # Auto-detect from extension
enhancer.save("output.webp")
enhancer.save("output.jpg")

# Explicit format
enhancer.convert('PNG').save("output.png")
enhancer.convert('WEBP').save("output.webp")

Compression

# JPEG quality (1-100)
enhancer.compress(quality=85).save("compressed.jpg")

# WebP with quality
enhancer.save("output.webp", quality=80)

# PNG optimization
enhancer.optimize_png().save("optimized.png")

# Target file size
enhancer.compress_to_size(max_kb=500).save("sized.jpg")

Quality Presets

# Web optimized
enhancer.preset('web')  # 1200px max, 85 quality, WebP

# Social media
enhancer.preset('instagram')  # 1080x1080, optimized
enhancer.preset('twitter')    # 1200x675
enhancer.preset('facebook')   # 1200x630
enhancer.preset('linkedin')   # 1200x627

# Print quality
enhancer.preset('print_4x6')   # 1800x1200, 300dpi
enhancer.preset('print_8x10')  # 3000x2400, 300dpi

# Thumbnail
enhancer.preset('thumbnail')   # 150x150, center crop
enhancer.preset('preview')     # 400px max, 70 quality

Batch Processing

Process Directory

from scripts.image_enhancer import batch_process

# Apply same operations to all images
results = batch_process(
    input_dir="photos/",
    output_dir="processed/",
    operations=[
        ("resize", {"width": 1200}),
        ("watermark", {"text": "© 2024", "position": "bottom-right"}),
        ("compress", {"quality": 85})
    ],
    formats=['jpg', 'png'],  # Only process these formats
    recursive=True           # Include subdirectories
)

print(f"Processed: {results['success']} images")
print(f"Failed: {results['failed']} images")

Rename Pattern

batch_process(
    input_dir="photos/",
    output_dir="processed/",
    operations=[("resize", {"width": 800})],
    rename_pattern="{name}_web_{index:03d}"
)
# Output: photo_web_001.jpg, photo_web_002.jpg, ...

Generate Multiple Sizes

from scripts.image_enhancer import generate_sizes

# Create multiple sizes from one image
sizes = generate_sizes(
    "hero.jpg",
    output_dir="responsive/",
    widths=[320, 640, 1024, 1920],
    format='webp'
)
# Output: hero_320.webp, hero_640.webp, etc.

Icon Generation

from scripts.image_enhancer import generate_icons

# Generate favicon and app icons from single image
icons = generate_icons(
    "logo.png",
    output_dir="icons/",
    sizes=[16, 32, 48, 64, 128, 256, 512]
)

Metadata Operations

# Read EXIF data
metadata = enhancer.get_metadata()
print(metadata['camera'])
print(metadata['date_taken'])
print(metadata['gps'])

# Strip metadata (privacy)
enhancer.strip_metadata()

# Preserve specific metadata
enhancer.strip_metadata(keep=['copyright', 'artist'])

CLI Usage

# Single file
python image_enhancer.py input.jpg -o output.jpg --resize 800 --quality 85

# Batch processing
python image_enhancer.py photos/ -o processed/ --resize 1200 --watermark "© 2024"

# Apply preset
python image_enhancer.py photo.jpg --preset instagram

# Generate icons
python image_enhancer.py logo.png --icons icons/

Supported Formats

| JPEG | Yes | Yes | Lossy, best for photos

| PNG | Yes | Yes | Lossless, supports transparency

| WebP | Yes | Yes | Modern format, good compression

| GIF | Yes | Yes | Animation support

| BMP | Yes | Yes | Uncompressed

| TIFF | Yes | Yes | High quality, large files

| ICO | Yes | Yes | Icon format

| HEIC | Yes | No | iPhone photos (read only)

Error Handling

from scripts.image_enhancer import ImageEnhancer, ImageError

try:
    enhancer = ImageEnhancer("photo.jpg")
    enhancer.resize(width=800).save("output.jpg")
except ImageError as e:
    print(f"Image error: {e}")
except FileNotFoundError:
    print("Image file not found")

Configuration

enhancer = ImageEnhancer("photo.jpg")

# Global settings
enhancer.config.update({
    'default_quality': 85,
    'default_format': 'webp',
    'preserve_metadata': False,
    'color_profile': 'sRGB',
    'dpi': 72
})

Performance Tips

  • Large batches: Use batch_process() with parallel=True

  • Memory: Process one image at a time for very large files

  • Speed: WebP encoding is slower but produces smaller files

  • Quality: Start at 85 quality, reduce if file size is critical

Dependencies

pillow>=10.0.0
opencv-python>=4.8.0
numpy>=1.24.0
返回排行榜