Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Komprimiert 'Vorschau' ein JPG neu, wenn man es nur um 90° dreht?

Komprimiert 'Vorschau' ein JPG neu, wenn man es nur um 90° dreht?

fadenschein08.10.1514:41
Hallo,

manchmal muss ich jpg-Bilder in Vorschau drehen.
Komprimiert Vorschau die jpgs neu (zusätzliche Komprimierungsverluste) oder ist eine 90° (oder 180) Drehung ohne Neukomprimierung beim erneuten Speichern möglich?

Danke
Fadenschein
0

Kommentare

blubblablax
blubblablax08.10.1515:13
Man kann in JPEG die Rotation um Vielfache von 90° per Transposition der DCT-Koeffizienten erreichen. Das heißt, dass das File entpackt wird, die Koeffizienten der einzelnen Blöcke ohne numerische Veränderungen neu angeordnet werden und ein neues File geschrieben wird.

Es erfolgt eine Neukomprimierung in Bezug auf die Entropie- und Lauflängenkompression (Huffman), was aber vollständig verlustlos durchführbar ist. Die Dateigröße wird sich (insignifikant) ändern aber es wird kein Pixel modifiziert bzw. qualitativ verschlechtert.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
mac_heibu08.10.1515:24
… du machst deinem Namen alle Ehre, blubblablax. Oder finde ich die Antwort auf die gestellte Frage einfach nicht?
0
jogoto08.10.1515:44
mac_heibu
Oder finde ich die Antwort auf die gestellte Frage einfach nicht?
Kommt darauf an, was Du als Antwort erwartest. Nicht jede Frage kann man mit "bassd scho“ beantworten.
0
Peter Eckel08.10.1515:55
Naja, daß man JPEG verlustfrei drehen kann (was letztlich das ist, was blubblablax ausgeführt hat), ist bekannt.

Die Frage ist halt, ob Preview das tut. Und das ist ziemlich klar nicht der Fall. Hier ein Detail aus einem Bild, das bei mir gerade herumlag:

Und hier das gleiche Detail nach 8x Drehen um 90 Grad in Preview:

Deutlich zu sehen die Kompressionsartefakte, die vorher nicht in der Ausprägung da waren.
„Ceterum censeo librum facierum esse delendum.“
0
teorema67
teorema6708.10.1515:56
mac_heibu
… du machst deinem Namen alle Ehre, blubblablax. Oder finde ich die Antwort auf die gestellte Frage einfach nicht?
Es braucht eine Neukomprimierung, die ist verlustfrei gegenüber dem Original, ohne geht es nicht. So interpretiere ich die Antwort von blubblablax ... oder nicht?
„Rassismus ist, überall Rassismus zu wittern, wo keiner ist, und damit echten Rassismus zu bagatellisieren. (Dieter Nuhr)“
0
Jarek08.10.1515:59
Dann frage ich ob z.B. Aperture es kann?.... oder Lightroom?....
oder ist es immer so: vier mal gedreht = halb gelöscht?
0
wp2312
wp231208.10.1516:13
Also drehen ohne Verlust ist grundsätzlich möglich (steht doch eindeutig im Post von blubblablax... ), Aperture kann das definitiv verlustfrei, egal wie oft man dreht.
„... fahren und fahren lassen!“
0
MikeMuc08.10.1516:14
Jarek
oder ist es immer so: vier mal gedreht = halb gelöscht?
Wahrscheinlich ein weil Peter uns wohl verschwiegen hat das er die Datei nach jeder Drehung gespeichert & wieder geöffnet hat. Vermutlich
0
Peter Eckel08.10.1516:33
MikeMuc
Wahrscheinlich ein weil Peter uns wohl verschwiegen hat das er die Datei nach jeder Drehung gespeichert & wieder geöffnet hat. Vermutlich
Definitiv. Was genau bei einer verlustfreien Drehung nichts am Bild ändern sollte.

Wenn ich ein Bild einfach nur viermal drehe und es dann abspeichere kann ich das ganze auch sein lassen, und das ist sicherlich nicht die Fragestellung gewesen
„Ceterum censeo librum facierum esse delendum.“
0
fadenschein08.10.1518:16
@Peter Eckel

Seltsam, jetzt hab' auch versuchsweise mal wie ein wilder gedreht und gesichert und dann mit dem Original verglichen: kein einziger Pixel unterschiedlich.

Hast Du auch 10.11 verwendet und mit Befehl + L gedreht?
0
Peter Eckel08.10.1518:31
fadenschein
Hast Du auch 10.11 verwendet und mit Befehl + L gedreht?
Ausgezeichneter Punkt: Ich habe den Test unter 10.10 gemacht. My bad.

Aber unter 10.11 klappt es auch nicht wirklich. Solange man das Bild geöffnet hat und dreht, wird es immer wieder ohne weitere Kompressionsverluste abgespeichert. Wenn man es aber öffnet, dreht, speichert, schließt und dann wieder öffnet etc. addieren sich die Verluste beim Drehen, es findet also auch unter 10.11 eine Neukompression statt und es wird (entgegen meinem Versuch vor ein paar Minuten) nicht verlustfrei gedreht.
„Ceterum censeo librum facierum esse delendum.“
0
fadenschein08.10.1519:38
Seltsam.
Ich habe den Test wiederholt.
Ein Bild dupliziert.
Die Kopie 4x gedreht. Zwischen den Drehungen gespeichert, geschlossen und sogar die Vorschau beendet.
Danach beide Bilder in Photoshop geladen und mit der Option Differenz übereinander gelegt.

Es gab keinen einzigen unterschiedlichen Pixel.
0
Peter Eckel08.10.1520:17
Das ist in der Tat interessant.

Ich habe den Versuch jetzt noch zweimal gemacht: Einmal mit einem sehr simplen, graphischen Bild (weißes Kreuz auf schwarzem Grund, schnell mit OmniGraffle hingeworfen). Das kann ich rotieren solange ich will, es bleibt, wie es ist.

Danach noch einmal mit einem Bild aus meinem Photobestand. Wieder ein Ausschnitt:
Vorher:

Nach drei vollen Rotationen in 90 Grad-Schritten:

Da stimmen dann nichtmal mehr die Farben.

Das läßt zumindest vermuten, daß die Verlustrate vom Bildmaterial abhängt. Mit was für einem Bild hast Du es versucht? Photo oder Grafik?
„Ceterum censeo librum facierum esse delendum.“
0
HeHo08.10.1520:48
Unter exportieren kann die JPG-Qualität eingestellt werden. Vielleicht wird dieser Wert dann auch beim Speichern genutzt.
0
Peter Eckel08.10.1521:06
HeHo
Unter exportieren kann die JPG-Qualität eingestellt werden. Vielleicht wird dieser Wert dann auch beim Speichern genutzt.
Das ist schon klar.

Hier ist es aber nicht der Punkt, weil es darum geht, daß in der Theorie (und wohl auch in einigen Softwareprodukten) bei einem Drehen um Vielfache von 90 Grad keine erneute Kompression des JPEG notwendig ist. In diesem Fall kann also die erneute Speicherung ohne weitere Verluste ablaufen, und die Frage, die wir momentan zu klären versuchen, ist, ob (und ggf. unter welchen Prämissen) Preview das Verfahren zur verlustlosen Drehung beherrscht oder nicht.
„Ceterum censeo librum facierum esse delendum.“
0
fadenschein08.10.1521:23
Peter Eckel
Das läßt zumindest vermuten, daß die Verlustrate vom Bildmaterial abhängt. Mit was für einem Bild hast Du es versucht? Photo oder Grafik?

Ich hab' ein beliebiges Foto aus meinem Bestand genommen.
Werde es nachher nochmal mit einem anderen Bild probieren.
0
Schens
Schens08.10.1521:53
GraphicConverter kann das. Und LemkeSoft hat jeden Cent dreimal verdient.
0
blubblablax
blubblablax08.10.1521:57
Hmpf. Ich kann bestätigen, dass Vorschau die n*90°-Rotation von Bildern bei mir unter 10.9 nicht verlustlos gebacken bekommt. Ganz so dramatisch wirkt sich der Bug bei mir nicht aus wie in den Bildern von Peter Eckel aber ärgerlich ist es schon.

iPhoto (9.5.1) funktioniert ebenfalls nicht oder nicht mehr verlustlos. Das haut mich glatt um.

was sauber funktioniert: jpegtran (Kommandozeile aber dafür macht es das, was es soll), Installation über Homebrew, Macports oder direkt aus dem Quellcode von

Jpegtools compilieren, Automator Workflow drumherum stricken, fertig.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
Peter Eckel08.10.1522:06
blubblablax
Hmpf. Ich kann bestätigen, dass Vorschau die n*90°-Rotation von Bildern bei mir unter 10.9 nicht verlustlos gebacken bekommt. Ganz so dramatisch wirkt sich der Bug bei mir nicht aus wie in den Bildern von Peter Eckel aber ärgerlich ist es schon.
Naja, ich hab's ja auch insgesamt 12mal geöffnet und wieder gespeichert um den Effekt zu provozieren. Und die gezeigten Ausschnitte beim zweiten Versuch sind 300%-Vergrößerungen. Mit bloßem Auge nach ein-, zweimal Drehen in normaler Ansicht sieht man auch nicht viel davon.

Aber ich bin schon beruhigt, daß der Effekt bei Dir nachvollziehbar ist. Man fängt ja an, an sich selbst zu zweifeln, wenn man der einzige ist, der sowas feststellt
„Ceterum censeo librum facierum esse delendum.“
0
Peter Eckel08.10.1522:24
Schens
GraphicConverter kann das. Und LemkeSoft hat jeden Cent dreimal verdient.
Hundertprozentige Zustimmung zu letzterem. Ich habe den Grafikkonverter seit mindestens 20 Jahren im Einsatz, meine erste Rechnung über 40 DM stammt vom 22. März 1996

Zu ersterem gibt es zwei Einschränkungen: Wenn man ein JPEG verlustlos drehen möchte, geht das nur dann wirklich verlustlos, wenn die Seitenlängen in Pixeln Vielfache von 8 sind, sonst muß das Bild vorher entsprechend beschnitten werden.

Und es geht nur im Browser, nicht wenn man das Bild öffnet, im Bearbeitungsfenster dreht und dann wieder speichert. Da treten auch beim Grafikkonverter Artefakte auf, wenn auch weniger drastisch als bei Vorschau.

Womit sich eine interessante Frage an @@fadenschein ergibt: Hatte Dein Testbild vielleicht Kantenlängen, die Vielfachen von 8 Pixeln bilden? Meines nämlich nicht. Vielleicht hängt es daran, ob Preview verlustfrei rotieren kann?

[Edit]
Die Antwort auf letztere Frage lautet 'Nein'. Gerade probiert.
„Ceterum censeo librum facierum esse delendum.“
0
fadenschein08.10.1522:41
@Peter Eckel
So, nun kann ich bestätigen. Anderes Bild, 12-fach gedreht.

Ich erkenne v.a. einen Farbunterschied.


Hier das Original.
0
Peter Eckel09.10.1500:05
Ja, die Verschiebung ins Rötliche sehe ich bei meinen Tests auch. Die Artefakte sieht man erst in der Vergrößerung, bevorzugt an kontrastreichen Kanten.

Womit wir dann bei der definitiven Antwort auf die ursprünglichen Fragen wären:

Ja. Nein.

„Ceterum censeo librum facierum esse delendum.“
0
Schens
Schens09.10.1506:54
JPG TIFF drehen JPG?
0
svenn
svenn09.10.1508:24
wie oft dreht ihr denn ein und das selbe bild?
himmel ist oben....landschaft ist unten.
bei einer kamera ist das stativgewinde unten...für alle die nicht wissen wie die kamera gehalten wird.

in allen anderen fällen bei den ein bild wirklich mal gedreht werden muss..., bild drehen-bild bearbeiten-ausschnitt wählen-speichern unter-bilder ansehen und sich freuen.
...bilder bei 100% oder grösser ansehen=fehler auf pixelebene springen euch mit dem arsch ins gesicht.
0
fadenschein09.10.1508:35
@Schens
Meines Wissens wäre es technisch möglich, ein jpg ohne Komprimierungsverluste zu drehen.
Wenn Du es erst in ein TIFF verwandelst und dann wieder als jpg abspeicherst, hast Du auf jeden Fall Komprimierungsverluste.

@svenn
Man dreht nur 1x. Bei dem mehrfachen Drehen ging es nur darum, festzustellen, ob das Bild neuberechnet wird oder nicht.
Es handelt sich um eine theoretische Frage. Beim täglichen Bildbetrachten spielt es keine Rolle.
Trotzdem sei die Frage erlaubt, warum Vorschau kein verlustfreies Drehen der Bilder erlaubt.
0
blubblablax
blubblablax09.10.1508:46
svenn
wie oft dreht ihr denn ein und das selbe bild?
himmel ist oben....landschaft ist unten.
bei einer kamera ist das stativgewinde unten...für alle die nicht wissen wie die kamera gehalten wird.
in allen anderen fällen bei den ein bild wirklich mal gedreht werden muss..., bild drehen-bild bearbeiten-ausschnitt wählen-speichern unter-bilder ansehen und sich freuen.
...bilder bei 100% oder grösser ansehen=fehler auf pixelebene springen euch mit dem arsch ins gesicht.
Das ist nicht der Knackpunkt. Natürlich sind JPEG-Files bereits verlustbehaftet komprimiert und es ist auch IMHO müßig zu diskutieren, wie viel mehr Fehler dazukommen, wenn man die JPEGs weiter verarbeitet. Der Luma-Kanal hat nach 4-facher Rotation im Bereich von +-2 Stufen Verfälschungen der Amplituden in 8 Bit. Das sieht kein Mensch. Schlimmer sind die Auswirkungen auf Chroma. Es ist leider in Mode gekommen (auch bei H.265 beispielsweise), die Farbkanäle überproportional zu quantisieren und die Farbverfälschungen in den obenstehenden Beispielbildern sind in meinen Augen untragbar.

Zurück zum Thema: verlustlose Rotation, Transposition und (Hoch-)Skalierung von JPEG-Bildern gibt es seit Jahren, für lau mit Quelltext und "free 4 all intents & purposes" BSD-Lizenz, direkt von der JPEG-Seite. Man darf angesichts der aufgerufenen Preise schon erwarten, dass die Heinis im Fallobst-Laden einen Compiler bedienen können.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
svenn
svenn09.10.1508:50
entweder bedarf es einer verlustfreien speicherung, oder in der datei wird "nur" das atribut "gedreht" gesetzt.
letzteres wird aber nicht von allen programmen die bilder darstellen können gelesen.
so kommt es, das ein und dasselbe bilder mal "richtig" oder verdreht angezeigt wird.
0
blubblablax
blubblablax09.10.1508:54
svenn
Lies mal hier:

Es wird kein Attribut gesetzt. Es wird das JPEG ausgepackt, die Daten werden umsortiert (z.T. mit Vorzeichenwechsel) und dann wieder neu eingepackt. Das Ergebnis ist eine zwar neu geschriebene Datei, jedoch ist diese seitens der enthaltenen Information identisch und der Vorgang ist reversibel.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
svenn
svenn09.10.1509:13
schreibe ich doch, entweder verlustfreie speicherung, oder ein attribut wird gesetzt.
es gibt mehrere möglichkeiten.
nur werden sie nicht von allen programmen angeboten oder erkannt.
das mag ärgerlich sein, aber oft der grund warum der kleinste gemeinsamen nenner "verlustbehaftete drehung" genutzt wird.
0
tangoloco09.10.1510:59
Komische Diskussion über einfach in der Fachliteratur nachzuschlagende Fakten - auch Wikipedia ist dafür gut genug.

RAW Bildbearbeitsprogrmamme (z.B. Capture One) drehen verlustfrei, da die original Daten nicht angefasst werden.

Das der Verlust der Feindaten marginal ist und in der Regel ohne Relevanz ist, das liegt eher an den Ausgabemedien - wer mit den Bilddaten z.B. einer P.One IQ260 für grossformatige hochaufgelöste Produktionen arbeitet könnte das anders sehen.

Was ganz anders sind JPG Dateien, das liegt massgeblich nicht an der Neuberechnung der Daten beim Drehen, sondern weil jedes Öffnen ein anschließendes Speichern verlangt, und genau das Speichern einer JPEG-Datei zu einer neuen verlustbehafteten Kompression führt.
Ds ist einfach so mit JPG Bilddaten.
Verwende Tiff, und alles ist im grünen Bereich.

Genau genommen kann noch nicht mal Photoshop verlustfrei drehen, da auch PSD die echten Daten anfasst. Auch wenn das bei den üblichen unscharfen Aufnahmen mit unscharfen Kitobjektiven nicht wahrgenommen wird.
„... sehr veraltete mentale Schaltkreise lassen Menschen überall geheimnisvolle Kräfte vermuten“
0
Peter Eckel09.10.1511:17
svenn
tangoloco
Ihr habt immer noch nicht verstanden, was eigentlich das Thema ist.

Unter bestimmten Umständen (nämlich wenn die Kantenlängen in Pixeln Vielfache von 8 sind und die Drehung um Vielfache von 90 Grad erfolgt) kann man JPEGs verlustfrei drehen, weil das Drehen dann keine erneute Komprimierung erfordert. Das ist kein Orientierungs-Flag, das irgendwo im Header oder den Metadaten gesetzt wird wie bei RAW-Aufnahmen, sondern im Endeffekt werden, vereinfacht gesagt, die einzelnen 8x8-Zellen des JPEG einzeln gedreht und dann neu angeordnet, so daß das Gesamtbild gedreht ist.

Grafikkonverter z.B. kann das (im Browser). Andere Tools können es auch. Die Frage war nun, ob Preview es kann, und die Antwort, die wir gefunden haben, lautet 'nein'.
„Ceterum censeo librum facierum esse delendum.“
0
blubblablax
blubblablax09.10.1511:37
tangoloco
Was ganz anders sind JPG Dateien, das liegt massgeblich nicht an der Neuberechnung der Daten beim Drehen, sondern weil jedes Öffnen ein anschließendes Speichern verlangt, und genau das Speichern einer JPEG-Datei zu einer neuen verlustbehafteten Kompression führt.
Ds ist einfach so mit JPG Bilddaten.
Das ist eben entgegen landläufiger Meinung nicht so, zumindestens wenn man (nicht wie Apple) weiß was man tun muss (=Quellcode ziehen, compilieren, nutzen).
Peter Eckel
Unter bestimmten Umständen (nämlich wenn die Kantenlängen in Pixeln Vielfache von 8 sind und die Drehung um Vielfache von 90 Grad erfolgt) kann man JPEGs verlustfrei drehen, weil das Drehen dann keine erneute Komprimierung erfordert. Das ist kein Orientierungs-Flag, das irgendwo im Header oder den Metadaten gesetzt wird wie bei RAW-Aufnahmen, sondern im Endeffekt werden, vereinfacht gesagt, die einzelnen 8x8-Zellen des JPEG einzeln gedreht und dann neu angeordnet, so daß das Gesamtbild gedreht ist.
Die Beschränkung auf n*8 in Breite/Höhe ist nicht einmal zwingend. Intern rundet JPEG so oder so vor der Transformation auf 8 Pixel Kantenlänge pro Block auf. Die Ausgabegröße wird nach der Verarbeitung per Crop hingeschnitten (auch wenn sich das in Software je nach Plattform eventuell effizienter lösen ließe).

Beispiel:

jpegtran -copy all -rotate 90 -outfile ~/Desktop/IMG_7802_rot.jpg ~/Desktop/IMG_7802.jpg
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
blubblablax
blubblablax09.10.1511:48
*grr* MTN hat die Dateien natürlich nicht 1:1 in den Thread kopiert. Sorry.
Hier die Originale:
Independent JPEG Group's JPEGTRAN, version 9a  19-Jan-2014
Copyright (C) 2014, Thomas G. Lane, Guido Vollbeding
Start of Image
JFIF APP0 marker: version 1.01, density 72x72  1
Miscellaneous marker 0xe1, length 908
Miscellaneous marker 0xe1, length 2571
Miscellaneous marker 0xed, length 54
Miscellaneous marker 0xe2, length 3158
Start Of Frame 0xc0: width=521, height=391, components=3
    Component 1: 2hx2v q=0
    Component 2: 1hx1v q=1
    Component 3: 1hx1v q=1
Define Huffman Table 0x00
Define Huffman Table 0x10
Define Huffman Table 0x01
Define Huffman Table 0x11
Define Quantization Table 0  precision 0
Define Quantization Table 1  precision 0
Define Restart Interval 33
Start Of Scan: 3 components
    Component 1: dc=0 ac=0
    Component 2: dc=1 ac=1
    Component 3: dc=1 ac=1
  Ss=0, Se=63, Ah=0, Al=0
End Of Image
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
tangoloco09.10.1512:08
Yeah!
Da lerne ich ja noch was!
Top und Danke
„... sehr veraltete mentale Schaltkreise lassen Menschen überall geheimnisvolle Kräfte vermuten“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.