JPG verlustfrei um 180° drehen schneidet 8 Pixel ab

C

Caspian DeConwy

Gast
Hallo,

ich habe ~1000 JPGs, die leider alle um 180° gedreht sind - also auf dem Kopf stehen.
Die Bilder haben alle das Format 1920x1080.

Wenn ich die Bilder in Irfanview (oder XNView oder JPG Lossless Rotator) verlustfrei um 180° drehe, werden immer 8 Pixel abgeschnitten; die Bilder sind danach 1920x1072 Pixel groß. Auch zweimal um 90° drehen klappt nicht - nach dem ersten Drehen ist noch alles ok - 1080x1920. Aber nach dem zweiten Drehen sind es wieder 1920x1072.

JPG Lossless Rotator meldet noch, dass die Bilder nicht verlustfrei gedreht werden können und bis zu 15 Pixel abgeschnitten werden.

Hat jemand eine Idee, ob man das ganze doch hinbekommen kann? 1920 und 1080 sind beides Vielfache von 8, was wohl die Voraussetzung zur verlustfreien Bearbeitungen sind. Aber es klappt eben trotzdem nicht :confused_alt:
Einmal verlustbehaftet um 90° + einmal verlustfrei um 90° drehen klappt.
 
Wie auch im Kommentar darunter angemerkt, sind die JPGs danach 10 mal so groß (bzw. sind es dann PNGs) - da wird also nichts verlustfrei gedreht.
Der Tipp darunter um es als JPG zu speichern führt bei mir nur zu einer Fehlermeldung.
 
Wie genau drehst du denn die Bilder in Irfanview? Habe eben testweise ein Bild per Batch-Konvertierung in sämtliche Richtungen gedreht und gespiegelt und da wird nichts abgeschnitten. Dateigröße ändert sich auch kaum.

i_view32_aNxnstDHid.png
 
Nicht ganz korrekt -
... _, “jpeg”) or your file gets a losless PNG-conversion
Bedeutet: Mit PNG verlierst du so keine Bildinformationen.
Aufgrund des Aufbaus des JPEG Formates ist 100% verlustfreies flippen nicht moeglich. Sprich: du verlierst auf jeden Fall Bildinformationenen wenn du bei JPEG bleibt. PNG ist zur Langzeitarchivierung klueger
 
  • Gefällt mir
Reaktionen: DFFVB
Per Batch ist es in Irfanview nicht verlustfrei. Eine verlustfreie Rotation musst du über die Thumbnailansicht machen, s. hier.
madmax2010 schrieb:
Sprich: du verlierst auf jeden Fall Bildinformationenen wenn du bei JPEG bleibt.
Aber es ist doch seltsam:
  • ein Bild, welches im Hochformat ist - 1080x1920 - kann ich verlustfrei ohne Probleme um 90° drehen
  • ein Bild, welches auf dem Kopf steht - 1920x1080 - kann ich verlustfrei ohne Probleme um 90° ins Hochformat drehen
  • ein Bild, welches vom Querformat ins Hochformat gedreht wurde, kann danach nicht mehr verlustfrei ohne Pixelverlust gedreht werden :confused_alt:
 
  • Gefällt mir
Reaktionen: zeaK
Eine verlustfreie Rotation ist per Plugin mit IrfanView möglich. Bei JPEG müssen nur die DCT-Koeffizienten neu angeordnet werden.
 
Poste doch mal ein Bild. Dann kann man das analysieren.
Hier funktioniert das einwandfrei, egal wie oft das gedreht wird.
 
Mit jpegtran -rotate 180 funktioniert es bei mir zumindest ohne Zeilen abzuschneiden.
Vielleicht wäre das auch eine Option.
 
was passiert deinem Bild wenn du nicht 180° rotierst, sondern einmal horizontal und einmal vertikal spiegelst? fehlen dann auch 8px?
 
  • Gefällt mir
Reaktionen: DFFVB
Uridium schrieb:
Poste doch mal ein Bild.
Ich hab's mal als Rar gepackt und angehangen, damit das Forum beim Upload nichts am Bild ändert.
Beim Spiegeln passiert übrigens genau dasselbe - nach dem zweiten Spiegeln sind 8 Pixel weg.

T00L schrieb:
Eine verlustfreie Rotation ist per Plugin mit IrfanView möglich. Bei JPEG müssen nur die DCT-Koeffizienten neu angeordnet werden.
Und wie mache ich das?

Es gibt in IrfanView noch die Option, nur "perfekte" Transformationen durchzuführen.
Image 001.jpg

Da kommt aber beim Ausführen auch eine Fehlermeldung die besagt, dass das Bild die falsche Größe dafür hat. Vermutlich müssen die Abmessungen doch durch 16 teilbar sein; 1080 ist nicht durch 16 teilbar.

Dann müsste ich nächstes Mal eine höhere Auflösung nehmen - die durch 16 teilbar ist -, und nach dem Drehen auf 1920x1080 croppen.
 

Anhänge

  • xx.rar
    378,4 KB · Aufrufe: 193
Hast du das Plugin-Paket von IrfanView installiert? Dann taucht die Funktion im Menü "Optionen" auf.
 
Ignoriere das, ich habe nur gesagt, was innerhalb einer JPG-Datei zu tun ist.
 
Ich sehe jetzt keine Option dafür - nur halt das normale Drehen; aber danach muss man das Bild speichern und dann wird es auch wieder neu komprimiert.

Außerdem brauche ich das Ganze als Batchkonvertierung für sehr viele Dateien.
 
Ggf ein Problem der Kamera? Vlt nimmt die einfach mit 8 Pixel weniger auf, und simuliert diese nur. Beim drehen kommt es dann raus
 
Caspian DeConwy schrieb:
Vermutlich müssen die Abmessungen doch durch 16 teilbar sein
Ja, so sieht's wohl aus, da deine JPGs 4:2:0 Chroma Subsampling haben, d.h. die Farbkanäle liegen in der Tat als 16x16 Blöcke vor. Wenn man 4:4:4 oder 4:2:2 (8x16, 1080/hochkant) nimmt, funktioniert es.

Fraglich, ob man verlustfrei von 4:2:0 auf 4:2:2 konvertieren kann. Da müsste man die Jungs von jpgtran/IJG fragen. Mach ich mal.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: CMDCake und DFFVB
Zurück
Oben