83 lines
3.6 KiB
Markdown
83 lines
3.6 KiB
Markdown
|
|
# FotoApp – Bearbeitung & Batch-Export (PySide6)
|
|||
|
|
|
|||
|
|
Windows-Desktop-App (Python 3.11+) für Foto-Batch-Bearbeitung mit LUT-Support.
|
|||
|
|
|
|||
|
|
## Funktionen
|
|||
|
|
|
|||
|
|
- Fotos laden per Drag & Drop oder Dateidialog (einzeln oder ganze Ordner)
|
|||
|
|
- Zuschnitt-Presets (Quadrat 1:1, Portrait 4:5, 3:4, Passfoto etc.)
|
|||
|
|
- **Interaktiver Maus-Crop**: Bei aktivem Crop-Overlay einfach auf das Bild klicken und ziehen, um ein neues Crop-Rechteck zu zeichnen (hält Seitenverhältnis ein). Außerhalb des Crop-Bereichs wird abgedunkelt.
|
|||
|
|
- Regler: Helligkeit, Kontrast, Sättigung, Temperatur, Tint, Teal & Orange
|
|||
|
|
- **LUT-Kette (Chain)**: Mehrere .cube-LUTs stapelbar mit eigener Stärke (0–100 %) pro LUT. Reihenfolge per Drag & Drop oder ▲/▼-Buttons änderbar. LUT-Dateien werden gecacht.
|
|||
|
|
- **Farbmischer (nach LUT)**: HSL-Sättigungsregler pro Farbband (Orange, Gelb, Grün, Cyan, Blau, Magenta) – wird NACH der LUT-Kette angewendet.
|
|||
|
|
- **Look-System**: Kompletten Bearbeitungszustand (Regler + LUT-Kette + Farbmischer + KI-Parameter) als benannten Look speichern/laden. Ein Klick stellt alles wieder her.
|
|||
|
|
- **KI-Freistellung**: Person per U²-Net (rembg) freistellen – komplett lokal, kein Cloud-Dienst. Modell wird beim ersten Start automatisch heruntergeladen.
|
|||
|
|
- **Weiche Kanten (Feather)**: Kanten der Freistellungsmaske per Gaussian Blur stufenlos weichzeichnen.
|
|||
|
|
- **Hintergrund-Modi**: Original, Unscharf (Portrait-Blur), Einfarbig, Transparent (PNG), Eigenes Hintergrundbild.
|
|||
|
|
- **Manuelle Masken-Korrektur**: Pinsel-Werkzeug (+ / −) mit einstellbarer Größe und Härte, Undo-Funktion.
|
|||
|
|
- **Retusche**: Haut weichzeichnen (bilateral Filter) im Personenbereich.
|
|||
|
|
- Export als JPG/PNG – einzeln oder Batch
|
|||
|
|
|
|||
|
|
## Verarbeitungsreihenfolge
|
|||
|
|
|
|||
|
|
1. **Basis-Anpassungen**: Helligkeit, Kontrast, Sättigung, Temperatur, Tint, Teal & Orange
|
|||
|
|
2. **LUT-Kette**: Sequentielle Anwendung aller LUTs mit je eigener Stärke
|
|||
|
|
3. **Farbmischer**: HSL-Sättigung pro Hue-Band (nach LUT)
|
|||
|
|
4. **KI-Maske / Freistellung**: Person erkennen + Alpha-Maske generieren
|
|||
|
|
5. **Feather**: Gaussian Blur auf Alpha-Maske
|
|||
|
|
6. **Hintergrund-Compositing**: fg × alpha + bg × (1 − alpha)
|
|||
|
|
7. **Retusche**: Haut weichzeichnen im Maskenbereich
|
|||
|
|
8. **Nachbearbeitung**: Helligkeit & Kontrast als Fein-Tuning (ganz zum Schluss)
|
|||
|
|
|
|||
|
|
## Config-Pfad
|
|||
|
|
|
|||
|
|
Alle Einstellungen, Looks und App-State werden unter:
|
|||
|
|
```
|
|||
|
|
%APPDATA%\FotoApp\config.json
|
|||
|
|
```
|
|||
|
|
gespeichert. Beim ersten Start wird ein eventuell vorhandenes altes `settings.json` migriert.
|
|||
|
|
|
|||
|
|
## Setup (Windows)
|
|||
|
|
|
|||
|
|
Doppelklick auf `start.bat` – erstellt automatisch venv und installiert Abhängigkeiten.
|
|||
|
|
|
|||
|
|
Oder manuell:
|
|||
|
|
```bash
|
|||
|
|
py -3 -m venv .venv
|
|||
|
|
.venv\Scripts\pip install -r requirements.txt
|
|||
|
|
cd ..
|
|||
|
|
.venv\Scripts\python -m fotoapp.main
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Farbmanagement
|
|||
|
|
|
|||
|
|
Bilder mit eingebettetem ICC-Profil (z.B. iPhone Display P3, AdobeRGB)
|
|||
|
|
werden automatisch nach **sRGB** konvertiert, bevor Anpassungen oder LUTs
|
|||
|
|
angewendet werden.
|
|||
|
|
|
|||
|
|
## LUT-Hinweise
|
|||
|
|
|
|||
|
|
- **Nur sRGB/Rec.709-LUTs** funktionieren korrekt ohne zusätzliche Transforms.
|
|||
|
|
- LUTs für **Log-Footage** (S-Log, C-Log, V-Log etc.) oder **ACES** liefern
|
|||
|
|
falsche Ergebnisse ohne spezielle Input-Transformation.
|
|||
|
|
- Unterstützt werden Standard `.cube` 3D-LUTs (Größen 17, 33, 65 üblich).
|
|||
|
|
- Dateien mit kombinierter 1D+3D LUT werden korrekt geparst (1D-Anteil wird übersprungen).
|
|||
|
|
|
|||
|
|
## PyInstaller Build (EXE)
|
|||
|
|
|
|||
|
|
### Onefile (einzelne EXE)
|
|||
|
|
```bash
|
|||
|
|
pyinstaller --noconfirm --clean --onefile --windowed ^
|
|||
|
|
--name FotoApp ^
|
|||
|
|
--collect-all PySide6 ^
|
|||
|
|
fotoapp\main.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Onedir (oft stabiler bei Qt)
|
|||
|
|
```bash
|
|||
|
|
pyinstaller --noconfirm --clean --onedir --windowed ^
|
|||
|
|
--name FotoApp ^
|
|||
|
|
--collect-all PySide6 ^
|
|||
|
|
fotoapp\main.py
|
|||
|
|
```
|