Transformation

Änderung mit und ohne Verlust

Pixel-Grafik wird durch einzelne Bildpunkte dargestellt. Fast jede Skalierung (Vergrößerung, Verkleinerung), Drehung oder andere Verzerrung führt zu einem Qualitäts-Verlust. Auf dieser Seite werden Methoden vorgestellt, um den Verlust zu minimieren oder ganz zu verhindern. Objekt-Grafik (z.B. SVG) verwendet Regeln, z.B. 'Zeichne ein Rechtecke, Farbe, Größe, Position, ...'
Mit Objekt-Grafik wird jede Transformation verlustfrei durchgeführt.
Grafik Ein Bild sagt mehr als tausend Worte
Links Ausgewählte SQL-Links Links zum Thema 'Transformation'

Verlustfreie Transformation - lossless transformation

Verlust bei JPEG-Drehung:
Wenn auf ein Bild in einem komprimierten Format eine Transformation angewendet wird, dann bedeutet das normalerweise einen Verlust an Information und damit an Qualität.
Die Verluste treten bei jeder Transformation von TrueColor-Bildern auf (JPEG oder PNG), nicht jedoch bei Index-Farben (PNG oder GIF).
Die Verwendung von Index-Farben (GIF) ist jedoch keine Lösung, da bereits die Umwandlung eines TrueColor-Bilds in Index-Farben einen erheblichen Verlust an Qualität bewirkt.

Gute Scanner und Digital-Kameras bieten die Möglichkeit, Bilder verlustfrei zu speichern, z.B. im Format TIFF - allerdings ohne Kompression !
Dafür muss jedoch erheblich mehr Speicherplatz aufgewendet werden, je nach Motiv 10-20mal so viel ! Nur in Sonderfällen (medizinische Bilder, DICOM) werden JPEG-Bilder verlustfrei (lossless) gespeichert.
In der normalen Praxis bedeutet das z.B. Verluste beim Drehen von JPEG-Bildern - unerwartet und unangenehm z.B. bei Bildern von Digital-Kameras.
Die Ursache der Verluste:
Vor der Anzeige oder Bearbeitung muss jedes komprimierte TrueColor-Bild von der Software 'ausgepackt' werden. Dabei können nur maximal so viele Daten wiedergewonnen werden, wie im Original-Bild enthalten waren. Je nach Grad der Kompression werden bei der Dekompression jedoch weniger Daten erhalten: Je stärker die angewendete Kompression, desto größer der Verlust an Information in jedem Zyklus Komprimieren - Speichern - Auspacken.
Wenn ein derartiges Bild erneut gespeichert wird, dann wird es von der Software normalerweise erneut komprimiert. Das bedeutet jedesmal einen weiteren Verlust an Qualität.

'Verlustfreie' Transaktionen können daher nur auf die original Bild-Datei angewendet werden, nicht auf bereits geöffnete Bilder. Das erscheint für die meisten Software-Designer zu kompliziert zu erklären, daher verzichtet man ganz auf diese Möglichkeit.
Die meisten Programme machen leider auf Verluste (durch Öffnen und neuerliches Speichern) nicht aufmerksam. Sichere Hinweise sind jedoch Fragen nach der gewünschten Bildqualität (oder Kompressions-Stufe) beim Speichern - in diesen Fällen wird immer mit Verlust gespeichert.
Verlustfrei:
Einige Transaktionen können ohne Verluste ausgeführt werden. Dazu gehört z.B. die Rotation um 90°, 180° oder 270° sowie die horizontale oder vertikale Spiegelung.
Diese Transaktionen müssen auf die ungeöffneten Bild-Dateien angewendet werden. Gute Software zeigt ihnen trotzdem das Bild an, allerdings wird das gröffnete (ausgepackte) Bild nicht bearbeitet.

Wenn sie mit komprimierten Bildern (z.B. JPEG) arbeiten, dann sollten sie verlustfreie Methoden anwenden, wann immer das möglich ist. Wenn ihre Software diese Option nicht bietet, dann können sie für verlustfreie Transaktionen gute Freeware (s.u.) verwenden.
Verlustfreie Transformationen sind exakt reversibel, d.h. sie ergeben bei Umkehrung wieder genau das Original-Bild.
Hinweise:

iMCU-Blöcke (interlaced minimum code unit):
Transaktionen werden normalerweise nicht mit einzelnen Pixeln, sondern mit Blöcken ausgeführt, deren Seitenlänge 8 Pixel oder Vielfache davon beträgt.
Das trifft auf Bilder von Digitalkameras fast immer zu: Sie werden 'sauber' transformiert, da ihre Dimensionen immer Vielfache von 8 oder 16 Pixeln betragen.
Von Bildern mit beliebigen Dimensionen werden allerdings nur ganze iMCU-Blöcke transformiert, sie können nach der Transformation an den Rändern max. 7 oder 15 Pixel breite Fehler-Streifen enthalten. Um das zu vermeiden, verwenden sie z.B. die Funktion trim von JPEGtran (s.u.), sie löscht unvollständige iMCU-Blöcke.
Meta-Daten:
Die meisten Bilder enthalten Meta-Daten, d.h. Angaben über das Bild (z.B. Datum, Zeit, Hardware-Einstellung, Author, usw.). Diese Daten sind z.B. nach der EXIF- oder IPTC-Norm codiert.
Bei der Ausführung von Transformationen werden die Meta-Daten meist nicht übernommen. EXIF-Daten, IPTC-Daten usw. werden gelöscht, manchmal wird auch das Datei-Datum auf den Zeitpunkt der Transformation geändert.
Je nach Programm werden Optionen zur Übernahme der Original-Meta-Daten angeboten. Achten sie auf dieses Detail: Meta-Daten sind für Profis unentbehrlich, ihre Bedeutung nimmt auch im Amateur-Bereich laufend zu. Falls ihre Software dazu keine Angaben liefert, führen sie eine Transaktion aus und vergleichen sie die Meta-Daten (z.B. mit IrfanView, Befehl Image | Information) vor und nach der Transaktion.
JPEGtran von Thomas G. Lane ist eine Software-Bibliothek (library) zur Ausführung verschiedener verlustfreier Transformationen. Diese Standard-Bibliothek wurde in viele Programme integriert (Liste).
Umgekehrt ist JPEGtran zwar einzeln verfügbar, oft jedoch in die Bibliothek JPEGlib integriert, die auch andere Komponenten zur Bearbeitung von JPEG-Bildern enthält. JPEGlib gibt es u.a. auch als Win-DLL.

Für Download und Dokumentation finden sie im Internet zahlreiche Quellen.
Achtung - einige der Optionen (trim, crop, grayscale) sind nicht reversibel, da sie Teile der Bild-Daten löschen. Verwenden sie zusätzlich zu jeder Transformation die Option -copy all, damit werden alle Meta-Daten übernommen.

Die Minimal-Verpackung für JPEGtran sind Konsolen-Programme, die als Quelltext oder ausführbares Programm (binary) für alle gängigen Betriebssysteme zur Verfügung stehen.
JPEGtran ist in jeder gängigen Linux-Distribution enthalten, muss jedoch auf Windows (wie gewohnt) erst installiert werden.
Diese Konsolen-Programme sind nicht zur manuellen Ausführung gedacht, ihre Stärke ist die Verwendung durch andere Programme, sowie die rasche vollautomatische Verarbeitung zahlreicher Bilder.
Software - willkürlich ausgewählte Beispiele:
IrfanView (iView) von Irfan Skiljan:
Dieses hervorragende Standard-Werkzeug bietet wie jede andere Bild-Software die Menü-Befehle Image | Rotate right bzw. Rotate left. Nachfolgendes Speichern erfolgt jedoch mit den üblichen Verlusten ! Das Programm verfügt allerdings über ein gut verstecktes Menü Options | JPEG Lossless Operations, wenn sie das entsprechende PlugIn installiert haben.
Rota von Tsuruzoh Tachibanaya:
ist ein Werkzeug, welches auf verlustefreie JPEG-Drehung spezialisiert ist. Einfach bedienbar, ausgezeichnete Qualität.
Entwicklung:
Die Standard Grafik-Bibliotheken GD-Library, ImageMagick usw. enthalten (derzeit ?) keine verlustfreien Transaktionen. Verwenden sie dazu JPEGtran bzw. JPEGlib. Da sie verlustfreie Transaktionen ohnehin nicht auf geöffnete JPEG-Bilder anwenden können, bietet sich an, sie mit Hilfe von System-Befehlen an das installierte JPEGtran Konsolen-Programm auszuführen.

Ausgewählte Links zum Thema 'Transformation'

  IrfanView - Homepage, Download
Rota - Download
JPEGtran - Homepage, Download, Lossless JPEGtran Applications (Link-Liste), Live (Online), Manual, Quelltext - diverse Download-Möglichkeiten für Win, MacOS usw.
GD-Library von Boutell

 
->