Image Resizer: Bilder automatisch optimieren & verkleinern
Batch-Resize, WebP-Konvertierung & Komprimierung — alles per Python
Python
Pillow
WebP
JPEG/PNG
🖼️ Ihre Bilder. Automatisch optimiert. Heute.
📸 Warum automatisierte Bildoptimierung?
Unoptimierte Bilder sind der Hauptgrund für langsame Webseiten. Ein durchschnittliches Handy-Foto ist 4–12 MB groß — als WebP sind es nur noch 80–200 KB bei gleicher Qualität. Das Tool reduziert Bildgrößen um bis zu 95%.
Bis zu 95% kleiner
WebP-Konvertierung + smarte Komprimierung. 4 MB → 150 KB ohne sichtbaren Qualitätsverlust.
Batch-Verarbeitung
Ganzen Ordner mit 1.000+ Bildern auf einmal verarbeiten. Rekursiv in Unterordner.
Responsive Sizes
Automatisch Thumbnail, Medium & Full-Size generieren. Perfekt für responsive Webdesign.
Wasserzeichen
Optionaler Wasserzeichen-Overlay. Copyright-Schutz automatisch.
🛠️ Funktionen im Detail
📏 Resize (Breite/Höhe)
Feste Pixelmaße oder prozentuale Skalierung. Seitenverhältnis optional beibehalten.
🔄 Format-Konvertierung
JPEG → WebP, PNG → WebP, HEIC → JPEG. Beliebiges Ausgabeformat wählbar.
🗜️ Qualitätseinstellungen
JPEG-Qualität 1–100, WebP-Qualität, PNG-Komprimierungsstufe. Feintuning möglich.
✂️ Smart Crop
Zentriertes Zuschneiden auf exakte Maße. Erkennung des Bildmittelpunkts.
💻 Der Resizer-Kern mit Pillow
from PIL import Image
from pathlib import Path
class ImageResizer:
"""Batch-Bildoptimierung mit Pillow."""
PRESETS = {
'thumbnail': (150, 150),
'small': (480, None),
'medium': (768, None),
'large': (1200, None),
'full': (1920, None),
}
def __init__(self, quality: int = 85, format: str = 'webp'):
self.quality = quality
self.format = format.lower()
self.stats = {'processed': 0, 'errors': 0, 'saved_mb': 0}
def process_folder(self, input_dir: Path, output_dir: Path,
size: tuple = None, recursive: bool = True):
for img_path in input_dir.rglob('*' if recursive else '*'):
if img_path.suffix.lower() in ('.jpg', '.jpeg', '.png', '.webp', '.bmp'):
try:
result = self._process_image(img_path, output_dir, size)
self.stats['processed'] += 1
self.stats['saved_mb'] += result['saved_mb']
except Exception as e:
self.stats['errors'] += 1
print(f"Fehler bei {img_path}: {e}")
return self.stats
def generate_responsive(self, img_path: Path, output_dir: Path):
"""Generiert mehrere Größen für responsive Nutzung."""
results = {}
for name, size in self.PRESETS.items():
sub_dir = output_dir / name
sub_dir.mkdir(parents=True, exist_ok=True)
results[name] = self._process_image(img_path, sub_dir, size)
return results
def _process_image(self, img_path: Path, output_dir: Path, size=None):
original_size = img_path.stat().st_size
with Image.open(img_path) as img:
# EXIF-Rotation korrigieren
img = self._auto_rotate(img)
# Größe anpassen
if size:
img = self._resize_keep_ratio(img, size[0], size[1])
# Ausgabe-Pfad
out_name = f"{img_path.stem}.{self.format}"
out_path = output_dir / out_name
output_dir.mkdir(parents=True, exist_ok=True)
# Speichern mit Optimierung
save_kwargs = {'quality': self.quality, 'optimize': True}
if self.format == 'png':
save_kwargs['compress_level'] = 6
img.save(out_path, format=self.format.upper(), **save_kwargs)
new_size = out_path.stat().st_size
return {'output': out_path, 'saved_mb': (original_size - new_size) / 1e6}
⚡ Webseite 3× schneller durch optimierte Bilder.
Bildoptimierung, die Ihre Webseite beschleunigt.
Von der einmaligen Optimierung bis zur automatisierten Pipeline.
Bild-Audit
Analyse aller Bilder Ihrer Webseite mit Optimierungspotenzial.
Batch-Optimierung
Alle Bilder auf einmal optimiert — inkl. responsive Varianten.
CI/CD-Pipeline
Automatische Bildoptimierung bei jedem Upload — nie wieder manuell.