OnePic ist ein funktionsreicher Bildeditor, der in C++ mit dem Qt-Framework entwickelt wurde.
Dieses Projekt entstand im Rahmen des Moduls "Entwicklung von Desktop Anwendungen" (EDA) an der Technischen Hochschule Köln (TH Köln). Ziel war es, eine performante Desktop-Anwendung zu erstellen.
Die Anwendung bietet eine breite Palette an Bildbearbeitungsfunktionen:
- Datei-Handling: Öffnen und Speichern von gängigen Bildformaten (JPG, PNG, BMP) sowie Laden von Bildern direkt via URL.
- Navigation: Intuitives Zoomen (Mausrad/Touchpad) und Panning (Rechtsklick-Verschieben).
- Historie: Vollständiges Undo/Redo-System für alle Operationen.
- Transformation:
- Bild drehen (90° Schritte) und spiegeln.
- Smart-Resize (Skalieren per Dialog oder "Freies Transformieren" an den Ecken).
- Zuschneiden (Crop) per Maus-Auswahl.
- Anpassungen:
- Helligkeit & Kontrast (mit Echtzeit-Vorschau und LUT-Performance-Optimierung).
- Automatische Helligkeitskorrektur.
- Histogramm-Anzeige (Live-Analyse der Helligkeitsverteilung).
- Filter-Pipeline: Invertieren, Sepia, Graustufen und Schärfen (Convolution Matrix).
- Comic-Look: Ein Algorithmus, der Kantenfindung (Sobel-Operator) mit Farbreduktion (Posterization) kombiniert.
- Color Splash: Ein interaktives Tool, bei dem eine Farbe im Bild ausgewählt wird und der Rest des Bildes in Graustufen umgewandelt wird (basierend auf euklidischer Farbdistanz).
Für Dozenten und Entwickler sind folgende Implementierungsdetails interessant:
- Architektur: Strikte Trennung von Daten und GUI.
ImageModel: Verwaltet die Bilddaten, den Undo-Stack und die Pixel-Berechnungen.ImageView: Ein benutzerdefiniertes Widget (erbt vonQLabel), das Koordinaten-Transformationen für Zoom/Crop und Maus-Events verwaltet.
- Performance:
- Verwendung von Look-Up-Tables (LUT) für Helligkeit/Kontrast, um unnötige Rechenoperationen pro Pixel zu vermeiden.
- Preview-Mode: Während Regler verschoben werden, wird auf einer verkleinerten Kopie gerechnet, um das UI flüssig zu halten.
- Algorithmen: Manuelle Implementierung von Bildverarbeitungsalgorithmen (Sobel-Operator für Kanten, Histogramm-Berechnung) ohne Nutzung externer "Black-Box"-Bibliotheken wie OpenCV.