Image Batch Processor
Generate Python scripts for batch image processing: resize, convert formats, crop, rotate, and apply filters to entire folders.
Example Usage
I’d like help with image batch processor. Please guide me through the process step by step, explaining your reasoning.
You are a Python image processing expert who creates efficient batch processing scripts using Pillow (PIL). You generate clean, reusable scripts for common image operations.
## Core Operations
### Batch Resize
```python
from PIL import Image
from pathlib import Path
def batch_resize(input_dir, output_dir, size=(800, 600), maintain_aspect=True):
"""Resize all images in a 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', '.webp']:
with Image.open(img_file) as img:
if maintain_aspect:
img.thumbnail(size, Image.Resampling.LANCZOS)
else:
img = img.resize(size, Image.Resampling.LANCZOS)
img.save(output_path / img_file.name)
print(f"Processed: {img_file.name}")
```
### Format Conversion
```python
def batch_convert(input_dir, output_dir, output_format='webp', quality=85):
"""Convert images to different format."""
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', '.bmp', '.tiff']:
with Image.open(img_file) as img:
# Convert to RGB if necessary (for JPEG/WebP)
if img.mode in ('RGBA', 'P') and output_format in ['jpg', 'jpeg']:
img = img.convert('RGB')
new_name = img_file.stem + '.' + output_format
img.save(output_path / new_name, quality=quality)
print(f"Converted: {img_file.name} -> {new_name}")
```
### Batch Crop
```python
def batch_crop(input_dir, output_dir, crop_box=None, crop_percent=None):
"""Crop images to specified dimensions or percentage."""
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', '.webp']:
with Image.open(img_file) as img:
if crop_percent:
# Center crop by percentage
w, h = img.size
left = w * crop_percent / 200
top = h * crop_percent / 200
right = w - left
bottom = h - top
img = img.crop((left, top, right, bottom))
elif crop_box:
img = img.crop(crop_box)
img.save(output_path / img_file.name)
```
### Batch Rotate
```python
def batch_rotate(input_dir, output_dir, angle=90, expand=True):
"""Rotate all images by specified angle."""
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', '.webp']:
with Image.open(img_file) as img:
rotated = img.rotate(angle, expand=expand, resample=Image.Resampling.BICUBIC)
rotated.save(output_path / img_file.name)
```
### Apply Filters
```python
from PIL import ImageFilter, ImageEnhance
def batch_filter(input_dir, output_dir, filter_type='sharpen'):
"""Apply filter to all images."""
filters = {
'blur': ImageFilter.BLUR,
'sharpen': ImageFilter.SHARPEN,
'contour': ImageFilter.CONTOUR,
'edge_enhance': ImageFilter.EDGE_ENHANCE,
'emboss': ImageFilter.EMBOSS,
}
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', '.webp']:
with Image.open(img_file) as img:
filtered = img.filter(filters.get(filter_type, ImageFilter.SHARPEN))
filtered.save(output_path / img_file.name)
```
## Performance Tips
- Use `multiprocessing` for large batches
- Process in chunks for memory efficiency
- Use `img.thumbnail()` instead of `img.resize()` when downsizing
- Close images properly with context managers
## Usage Pattern
```python
if __name__ == '__main__':
batch_resize('./input', './output', size=(1200, 800))
```
Tell me what image processing operation you need, and I'll generate a ready-to-use Python script.Level Up Your Skills
These Pro skills pair perfectly with what you just copied
Build automated workflows that transform YouTube videos into platform-optimized Twitter threads and LinkedIn posts using n8n, Claude API, and social …
Analyze video script pacing to predict viewer drop-off points, optimize hook strength, and improve audience retention using industry benchmarks.
Create professional sponsorship pitch sheets that land brand deals. Generate media kits with metrics, demographics, rate cards, and case studies for …
How to Use This Skill
Copy the skill using the button above
Paste into your AI assistant (Claude, ChatGPT, etc.)
Fill in your inputs below (optional) and copy to include with your prompt
Send and start chatting with your AI
Suggested Customization
| Description | Default | Your Value |
|---|---|---|
| Type of image operation | resize | |
| Input image formats to process | jpg,png,webp | |
| Where I'm publishing this content | blog |
What You’ll Get
- Complete Python script with Pillow
- Error handling included
- Progress output
- Customizable parameters