Image Filter Lab
Apply professional filters and effects to images.
Features
- Color Filters: Sepia, B&W, color tint, saturation
- Blur Effects: Gaussian, motion, radial blur
- Artistic Filters: Vintage, film grain, vignette
- Enhancements: Sharpen, contrast, brightness
- Custom Presets: Save and apply filter combinations
- Batch Processing: Apply filters to multiple images
Quick Start
from image_filter import ImageFilterLab
lab = ImageFilterLab()
lab.load("photo.jpg")
# Apply vintage filter
lab.vintage()
lab.save("photo_vintage.jpg")
# Chain multiple effects
lab.load("photo.jpg")
lab.brightness(1.2).contrast(1.1).saturation(0.8).vignette()
lab.save("photo_edited.jpg")
CLI Usage
# Apply single filter
python image_filter.py --input photo.jpg --filter vintage --output result.jpg
# Apply multiple filters
python image_filter.py -i photo.jpg --sepia --vignette --sharpen -o result.jpg
# Adjust parameters
python image_filter.py -i photo.jpg --brightness 1.2 --contrast 1.1 -o result.jpg
# Batch process
python image_filter.py --batch photos/ --filter vintage --output-dir filtered/
API Reference
ImageFilterLab Class
class ImageFilterLab:
def __init__(self)
# Loading
def load(self, filepath: str) -> 'ImageFilterLab'
# Color Filters
def grayscale(self) -> 'ImageFilterLab'
def sepia(self, intensity: float = 1.0) -> 'ImageFilterLab'
def negative(self) -> 'ImageFilterLab'
def tint(self, color: Tuple, intensity: float = 0.3) -> 'ImageFilterLab'
# Adjustments
def brightness(self, factor: float) -> 'ImageFilterLab'
def contrast(self, factor: float) -> 'ImageFilterLab'
def saturation(self, factor: float) -> 'ImageFilterLab'
def hue(self, shift: int) -> 'ImageFilterLab'
def temperature(self, value: int) -> 'ImageFilterLab'
# Blur Effects
def blur(self, radius: int = 5) -> 'ImageFilterLab'
def motion_blur(self, size: int = 15, angle: int = 0) -> 'ImageFilterLab'
def radial_blur(self, amount: int = 10) -> 'ImageFilterLab'
# Sharpen
def sharpen(self, factor: float = 1.0) -> 'ImageFilterLab'
def unsharp_mask(self, radius: int = 2, percent: int = 150) -> 'ImageFilterLab'
# Artistic
def vintage(self) -> 'ImageFilterLab'
def film_grain(self, amount: int = 25) -> 'ImageFilterLab'
def vignette(self, radius: float = 0.8, intensity: float = 0.5) -> 'ImageFilterLab'
def posterize(self, levels: int = 4) -> 'ImageFilterLab'
def solarize(self, threshold: int = 128) -> 'ImageFilterLab'
# Presets
def apply_preset(self, preset: str) -> 'ImageFilterLab'
def save_preset(self, name: str, operations: List) -> None
# Output
def save(self, filepath: str, quality: int = 95) -> str
def reset(self) -> 'ImageFilterLab'
# Batch
def batch_process(self, input_dir: str, output_dir: str,
filter_func: callable) -> List[str]
Built-in Presets
- vintage: Sepia tint, reduced saturation, vignette
- film: Slight desaturation, grain, crushed blacks
- instagram: High contrast, warm tint, vignette
- noir: High contrast B&W, strong vignette
- warm: Warm color temperature, increased saturation
- cool: Cool color temperature, slightly desaturated
- dramatic: High contrast, deep shadows
- dreamy: Soft blur, bright highlights, low contrast
Dependencies
- pillow>=10.0.0
- opencv-python>=4.8.0
- numpy>=1.24.0
1---2name: image-filter-lab3description: Apply artistic filters to images including vintage, sepia, B&W, blur, sharpen, vignette, and color adjustments. Create custom filter presets.4---5
6# Image Filter Lab
7
8Apply professional filters and effects to images.
9
10## Features
11
12- **Color Filters**: Sepia, B&W, color tint, saturation
13- **Blur Effects**: Gaussian, motion, radial blur
14- **Artistic Filters**: Vintage, film grain, vignette
15- **Enhancements**: Sharpen, contrast, brightness
16- **Custom Presets**: Save and apply filter combinations
17- **Batch Processing**: Apply filters to multiple images
18
19## Quick Start
20
21```python
22from image_filter import ImageFilterLab
23
24lab = ImageFilterLab()
25lab.load("photo.jpg")
26
27# Apply vintage filter
28lab.vintage()
29lab.save("photo_vintage.jpg")
30
31# Chain multiple effects
32lab.load("photo.jpg")
33lab.brightness(1.2).contrast(1.1).saturation(0.8).vignette()
34lab.save("photo_edited.jpg")
35```
36
37## CLI Usage
38
39```bash
40# Apply single filter
41python image_filter.py --input photo.jpg --filter vintage --output result.jpg
42
43# Apply multiple filters
44python image_filter.py -i photo.jpg --sepia --vignette --sharpen -o result.jpg
45
46# Adjust parameters
47python image_filter.py -i photo.jpg --brightness 1.2 --contrast 1.1 -o result.jpg
48
49# Batch process
50python image_filter.py --batch photos/ --filter vintage --output-dir filtered/
51```
52
53## API Reference
54
55### ImageFilterLab Class
56
57```python
58class ImageFilterLab:
59 def __init__(self)
60
61 # Loading
62 def load(self, filepath: str) -> 'ImageFilterLab'
63
64 # Color Filters
65 def grayscale(self) -> 'ImageFilterLab'
66 def sepia(self, intensity: float = 1.0) -> 'ImageFilterLab'
67 def negative(self) -> 'ImageFilterLab'
68 def tint(self, color: Tuple, intensity: float = 0.3) -> 'ImageFilterLab'
69
70 # Adjustments
71 def brightness(self, factor: float) -> 'ImageFilterLab'
72 def contrast(self, factor: float) -> 'ImageFilterLab'
73 def saturation(self, factor: float) -> 'ImageFilterLab'
74 def hue(self, shift: int) -> 'ImageFilterLab'
75 def temperature(self, value: int) -> 'ImageFilterLab'
76
77 # Blur Effects
78 def blur(self, radius: int = 5) -> 'ImageFilterLab'
79 def motion_blur(self, size: int = 15, angle: int = 0) -> 'ImageFilterLab'
80 def radial_blur(self, amount: int = 10) -> 'ImageFilterLab'
81
82 # Sharpen
83 def sharpen(self, factor: float = 1.0) -> 'ImageFilterLab'
84 def unsharp_mask(self, radius: int = 2, percent: int = 150) -> 'ImageFilterLab'
85
86 # Artistic
87 def vintage(self) -> 'ImageFilterLab'
88 def film_grain(self, amount: int = 25) -> 'ImageFilterLab'
89 def vignette(self, radius: float = 0.8, intensity: float = 0.5) -> 'ImageFilterLab'
90 def posterize(self, levels: int = 4) -> 'ImageFilterLab'
91 def solarize(self, threshold: int = 128) -> 'ImageFilterLab'
92
93 # Presets
94 def apply_preset(self, preset: str) -> 'ImageFilterLab'
95 def save_preset(self, name: str, operations: List) -> None
96
97 # Output
98 def save(self, filepath: str, quality: int = 95) -> str
99 def reset(self) -> 'ImageFilterLab'
100
101 # Batch
102 def batch_process(self, input_dir: str, output_dir: str,
103 filter_func: callable) -> List[str]
104```
105
106## Built-in Presets
107
108- **vintage**: Sepia tint, reduced saturation, vignette
109- **film**: Slight desaturation, grain, crushed blacks
110- **instagram**: High contrast, warm tint, vignette
111- **noir**: High contrast B&W, strong vignette
112- **warm**: Warm color temperature, increased saturation
113- **cool**: Cool color temperature, slightly desaturated
114- **dramatic**: High contrast, deep shadows
115- **dreamy**: Soft blur, bright highlights, low contrast
116
117## Dependencies
118
119- pillow>=10.0.0
120- opencv-python>=4.8.0
121- numpy>=1.24.0