• Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Mitmachen beim DSLR-Forum Fotowettbewerb Mai 2025.
    Thema: "Grün"

    Jeden Monat attraktive Gewinnprämien, gesponsert von unserem Partner PixelfotoExpress.
    Alle Infos zum Mai-Wettbewerb hier!
  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

JPG verlustfrei rotieren. Geht das?

  • Themenersteller Themenersteller Gast_5174
  • Erstellt am Erstellt am
PeerTheer schrieb:
Das ist eine Behauptung von Dir - Kannst Du mir mal sagen, wie man verlustfrei mit JPG speichert?

Ja? Bitte helfe einem Schwachsinnigen das zu verstehen!
Ich habe weder vor, mich so supertief in die mathematischen Feinheiten der JPG-Quantisierung oder deren Speicherung einzuarbeiten (das hat mir schon im Studium gereicht), noch das in irgendeiner Form dann nochmals im Internet zu veröffentlichen.

Mir reicht es, wenn ich (a) durch eigene Tests exakt dieses belegen kann und (b) Mathematiker (sprich u.A. die oben schon zitierten IJC) dies recht verständlich (wenn auch in Englisch) beschreiben und es sich mit Sicherheit auch mathematisch bewiesen haben.

Es sprach niemand davon, daß man beliebige Rohdaten verlustos in JPG (nicht JPG2000) speichern kann, sondern nur (was auch die Ausgangsfrage war, so weit ich sie verstanden habe), daß man vorhandene JPGs verlustlos ins Hochkantformat bringen und das Ergebnis dann wieder als JPG speichern kann.

Entscheidend für 99,999% der User ist meiner Meinung nach aber der sichtbare Qualitätsverlust und den will ich bei 'normalen' Betrachtungsmedien (PC-Monitor, TFT, Beamer, Tintenstrahler, Belichtung, Sublimationsdrucker) bei niedrigster Kompressionsstufe einfach mal abstreiten.
Na ja, auch 20mal mit Photoshop Stufe 12 gespeichert ergibt niemals die Originaldaten, selbst wenn ich das Bild überhaupt nicht drehe. Dem User, der nicht danach sucht, wird es vieleicht nicht auf Anhieb am Monitor bemerken, mir wäre es aber schon zu viel (unnötiger) Verlust. Soweit hat PeerTheer ja vollkommen Recht.

Andererseits wird es kein einziger User bemerken (ohne sich die Datenstruktur des JPGs anzuschauen), ob ein JPG mit dem passenden Programm mittels der oben erwähnten Vertauschung/Negierung der DCT-Koeffizienten in 90°-Schritten gedreht wurde oder nicht (wenn man das Ausgangsbild z.B. 4mal verlustlos um je 90° dreht). Da die Koeffizienten nur vertauscht/negiert werden und alle folgenden Kompressionsschritte verlustlos sind (der geneigte Leser möge bitte selber suchen, wie RLE und Huffman-Kompression funktionieren, falls nicht eh' bekannt), sind alle Transformationsschritte für eine 90/180/270 Grad Rotation verlustlos.

Oh man, jetzt ist es doch schon fast eine, natürlich nicht bewiesene, viel zu theoretische Begründung.

Gruß Bernhard
 
Zuletzt bearbeitet:
Bei der normalen JPeg Kompression erhält man den stärksten Kompressionsanteil durch die Irrelevantsreduktion. Es werden nicht so wichtige Informationen einfach weggeworfen.
Zusätzlich wird das ganze dann auch noch Redundanzfrei, also total unwichtige und rekonstruierbare Informationen werden ebenfalls gelöscht.

Mehrfaches komprimieren durch Irrelevantsreduktion verschlechtert das Bild in jedem Fall, da immer irgendwelche vielleicht dann doch sichtbaren Informationen gelöscht werden.
Bei jedem neuen Speichern gehen also wie gesagt Informationen verloren.

Das einzige was ich mir jetzt vorstellen kann:
Durch die Verlustfreie Rotation wird keine neue irrelevantsreduktion durchgeführt. Es wird vielleicht nur teilentpackt und neu redundant gespeichert, wodurch kein Informationsverlust stattfindet.
Ein JPeg Bild ist ja in XmalX Blöcke eingeteilt die einzelnd komprimiert werden.
Vielleicht werden diese Blöcke garnicht mehr dekomprimiert, sondern nur das grobe Gesamtbild.
Wie GymfanDE beschrieben hat lassen sich diese groben Blöcke dann auch nur um jeweils xmal90° verlustfrei drehen.
Es wird also nur das Grobe gesamtbild gedreht und neu sortiert. Dadurch entstehen aber keine neuen Verlustbehafteten Kompressionen.
Ist nur eine mögliche Erklärung...
 
devastators schrieb:
Bei jedem neuen Speichern gehen also wie gesagt Informationen verloren.
Genau so ist es. Ob theoretisch oder nicht, ändert überhaupt nichts an der Aussage, das es eben NICHT verlußfrei ist.

Ich erinnere an die Aussage des Threadstarters: "Selbst, wenn der Qualitätsverlust marginal wäre - muß ja nicht sein"

Es geht mir auch nur um die Speicherung in JPG. Die Drehung an sich hat mit JPG ja nichts zu tun.
 
PeerTheer schrieb:
Genau so ist es. Ob theoretisch oder nicht, ändert überhaupt nichts an der Aussage, das es eben NICHT verlußfrei ist.

Ich erinnere an die Aussage des Threadstarters: "Selbst, wenn der Qualitätsverlust marginal wäre - muß ja nicht sein"

Es geht mir auch nur um die Speicherung in JPG. Die Drehung an sich hat mit JPG ja nichts zu tun.

dann muss man die Haarspalterei aber auch zuende führen.
Beim Verlustfreien Drehen wird das JPeg ebenfalls wieder gespeichert, aber dabei wahrscheinlich wirklich Verlustfrei.
Wenn meine Theorie auch nur annährend stimmt wird das Bild dabei aber auch nie vollständig entpackt.

Wenn ich in IrfanViev verlustfrei drehe, brauche ich z.B. garnicht mehr auf Speichern drücken.. das geschieht dabei automatisch.
 
GymfanDE schrieb:
Andererseits wird es kein einziger User bemerken (ohne sich die Datenstruktur des JPGs anzuschauen), ob ein JPG mit dem passenden Programm mittels der oben erwähnten Vertauschung/Negierung der DCT-Koeffizienten in 90°-Schritten gedreht wurde oder nicht ...

:eek: War mir nicht klar, daß es tatsächlich User gibt, die sich an den Einsen und Nullen eines Bildes erfreuen und die sogar dann mit anderen Einsen und Nullen vergleichen wollen. Wieder was gelernt.
Vielleicht gibts ja im analogen Bereich auch Fotografen, die sich das Filmkorn unterm Mikroskop anschauen ... da wird so ein Sonnenuntergang doch gleich viel schöner ;)

Ich bleib dabei, bei niedrigster Kompressionsstufe gibts auf normalen Betrachtungsmedien KEINEN sichtbaren Qualitätsverlust, wenn man als Ausgangspunkt ohnehin schon ein JPG hat (Ein HEX-Editor ist kein normales Betrachtungsmedium für ein Foto!).
 
Oh - ein Kompressionsthread

Licht ins Dunkel dürfte dieser Link bringen. Speziell der Absatz:

"Lossless..."-Werkzeuge verwenden: Angenommen, man hat mit seiner Digitalkamera eine Reihe von JPEG-Aufnahmen im Hochformat gemacht und möchte diese - nachdem man sie durch ein Drehen um 90 Grad in eine betrachtungsfreundliche Formatlage gebracht hat - nun definitiv archivieren. Der Haken dabei: Speichert man das Bild nach dem Drehen erneut im JPEG-Format, kann - wie oben beschrieben - ein erneuter Qualitätsverlust eintreten. Es gibt allerdings auch Programme wie PicMeta oder das kostenlose JPEGCrop, die Bildrotation oder Beschnitt ohne zusätzlichen Kompressionsverlust durchführen können. Systembedingt müssen dabei jedoch gewisse Einschränkungen in Kauf genommen werden: der Beschnitt ist durch das JPEG-Verfahren abhängig von den Pixelgruppen, die bei der Kompression zu einem "Block" zusammengefasst werden. Folglich ist er nur an diesen Blockgrenzen - und nicht pixelgenau - möglich. Außerdem kann die verlustfreie Drehung nur in 90-Grad-Schritten durchgeführt werden. Dies ist aber perfekt für Ihre Hochformatbilder, die Sie in die richtige Lage bringen wollen.
 
stranger schrieb:
:eek: War mir nicht klar, daß es tatsächlich User gibt, die sich an den Einsen und Nullen eines Bildes erfreuen und die sogar dann mit anderen Einsen und Nullen vergleichen wollen. Wieder was gelernt.
Es soll sogar Leute geben, die genau damit ihr Geld verdienen, welches sie dann wieder Canon in den Rachen schmeißen.

devastators schrieb:
Wenn meine Theorie auch nur annährend stimmt wird das Bild dabei aber auch nie vollständig entpackt.
Deine Theorie stimmt ganz gut. Vob den Farbwerten oder gar einzelnen Pixeln bekommt die Rotationsroutine nichts mit.
 
heinrich schrieb:
Warum suchst du denn lange rum?
Verwende doch den GraphicConverter.

Der GraphicConverter von LemkeSoftware kann (zumindest in der aktuellen Version 5.4) sehr wohl JPEGs verlustlos drehen. Steht auch so in der Produktbeschreibung.

Naja, gerade der Graphicconverter hat mich mal stutzig gemacht. Ich erinnere mich vor einiger Zeit an ein Alert-Fenster, in dem bemerkt wurde, daß irgendein Bild nicht verlußtfrei wiedergegeben werden kann.

Nun habe ich verstanden warum - und das tangiert meine Bilddaten absolut nicht. Dann rotier' ich jetzt halt mal mit GC, was das Zeich hält:-) :D
 
GymfanDE schrieb:
Na ja, auch 20mal mit Photoshop Stufe 12 gespeichert ergibt niemals die Originaldaten, selbst wenn ich das Bild überhaupt nicht drehe. Dem User, der nicht danach sucht, wird es vieleicht nicht auf Anhieb am Monitor bemerken, mir wäre es aber schon zu viel (unnötiger) Verlust. Soweit hat PeerTheer ja vollkommen Recht.
Gruß Bernhard

Und nichts anderes meinte ich. Vielleicht haben wir nur aneinander vorbeigeredet... :o
 
JPG in Fireworks verlustfrei rotieren

In Macromedia Fireworks würde ich das folgendermassen machen:

1. Neue Datei erstellen (ist dann PNG)
2. JPEG importieren
3. Leinwand drehen
4. in TIFF exportieren oder als PNG speichern

An dieser Stelle noch zwei Fragen:

1. Ist PNG wie TIFF auch verlustfrei so dass man es anstelle von TIFF verwenden kann?
2. Im Pentax Photo Laboratory kann nicht in PNG exportiert werden. Gibt es Qualitätsverluste, wenn ich das TIFF nachher in ein PNG umwandle?
 
Mal 'ne ganz blöde Frage: warum gibt es überhaupt "Verluste" beim Drehen? Hab ich mich schon immer gefragt.

Wenn ich mir mit meinem Laienwissen einen JPEG-Drehalgorithmus vorstelle, dann setze ich doch einfach die Pixel nach ihrer Anordnung von horizontal in vertikal um. Warum geht dabei etwas verloren? :confused:
 
Runciter schrieb:
Mal 'ne ganz blöde Frage: warum gibt es überhaupt "Verluste" beim Drehen? Hab ich mich schon immer gefragt.

Wenn ich mir mit meinem Laienwissen einen JPEG-Drehalgorithmus vorstelle, dann setze ich doch einfach die Pixel nach ihrer Anordnung von horizontal in vertikal um. Warum geht dabei etwas verloren? :confused:

Soweit ich weiss, werden bei JPEG nicht einzelne Pixel gespeichert, sondern wie bei vielen Komprimierungsprogrammen werden Pixelgruppen bzw. das gesamte Bild durch einen Algorithmus ausgewertet. Man kann also nicht einfach durch Austausch der Pixelanordnung drehen.

Os es beim Drehen Verlust gibt hängt ganz von dem Verfahren ab, das das jeweils genutzte Programm verwendet. Verluste (oder neutral gesprochen Veränderungen) gibt es immer dann, wenn laienhaft ausgedrückt ein Programm die Bildinformationen nach dem Drehen wieder in eine neue JPEG-Datei umwandelt. Dies ist bei vielen Programmen der Fall, wenn ein Bild irgendwie geändert wurde und es danach gespeichert wird.

Verluste entstehen daher im Regelfall beim Speichern eines geänderten Bildes als JPEG. Man sollte deshalb bei der EBV möglichst alle Bearbeitungsschritte in einem Abwasch erledigen (oder zwischendurch in einen verlustfreien Format speichern) und erst ganz zum Schluß eine Speicherung / Konvertierung in JPEG vornehmen.

Programme zur verlustfreien Rotation drehen nur die Bildinformationen um n x 90 Grad und berechnen kein neues Bild.
 
Zuletzt bearbeitet:
... oder:

Um ein JPeg zu drehen muss es vollständig entpackt und dann komplett neu komprimiert werden.
Vergleichbar mit einer Rechtschreibkorrektur in einer komprimierten (ZIP) Word Datei. Das geht nicht im komprimierten Zustand.
(ZIP komprimiert Verlustfrei!)
 
AW: JPG in Fireworks verlustfrei rotieren

Irgendwie werft ihr jetzt schon wieder einiges durcheinander:

Will man ein JPG (oder irgendein Bild) um beiebeige Winkel drehen, so muß man es komplett dekodieren, drehen und dann wieder neu komprimieren. Für 90°-Stufen (und auch nur für diese) kann man zwar die einzelnen Pixel verlustfrei im Bildbearbeitungsprogramm drehen (vertauschen), man muß aber das Ergebnis wieder irgendwie speichern. Geschieht dies mit JPG, dann erhält man zwangsweise eine Qualitätsverschlechterung. Egal, ob sie mit bloßem Auge sichtbar ist oder nicht.

Will man ein JPG nur in 90°-Schritten drehen, dann muß man es nicht komplett dekodieren. Es reicht ein Dekodierung bis zu dem Schritt, in dem beim Speichern eines neuen Bildes die Verluste entstehen. Diese Koeffizienten (quasi Fließkommazahlen) muß man nur vertauschen oder negieren. Danach kann man sie wieder verlustfrei komprimieren und hat dann ein um x*90° gedrehtes JPG. Dieses enthält nach dem Dekodieren mit einem Bildbearbeitungsprogramm aber noch exakt die gleichen Pixel (Farbwerte) wie das Original-JPG.

aliasc schrieb:
1. Ist PNG wie TIFF auch verlustfrei so dass man es anstelle von TIFF verwenden kann?
Ja, PNG ist ebenso verlustfrei wie TIF, BMP, TGA oder PPM.

aliasc schrieb:
2. Im Pentax Photo Laboratory kann nicht in PNG exportiert werden. Gibt es Qualitätsverluste, wenn ich das TIFF nachher in ein PNG umwandle?
PNG kann auch mit 48Bit-Bildern umgehen. Somit lassen sich beide Formate problem- und verlustlos in einander umwandeln.

Gruß Bernhard
 
@GymfanDE
Ich denke Dein Posting kann man auch ziemlich irritierend finden.


Verlustfreie Drehung geht nur mit dem Originalbild.

Hat man es mit einem EBV Programm geöffnet und schon bearbeitet, funktioniert diese Drehung nicht mehr, macht aber auch keinen Sinn, da man eh schon Änderungen gemacht hat und diese neu abspeichern müsste.

Eine n*90° Drehung kann man also nur auf eine JPeg Datei Anwenden und nicht gleichzeitig in einem Programm benutzen (wo dafür aber x° Drehungen möglich sind. Diese Drehungen geschehen aber dann am komplett entpakten Bild, wo jedes Pixel angefasst wird.)
 
AW: JPG in Fireworks verlustfrei rotieren

GymfanDE schrieb:
Irgendwie werft ihr jetzt schon wieder einiges durcheinander:

Will man ein JPG (oder irgendein Bild) um beiebeige Winkel drehen, so muß man es komplett dekodieren, drehen und dann wieder neu komprimieren. Für 90°-Stufen (und auch nur für diese) kann man zwar die einzelnen Pixel verlustfrei im Bildbearbeitungsprogramm drehen (vertauschen), man muß aber das Ergebnis wieder irgendwie speichern. Geschieht dies mit JPG, dann erhält man zwangsweise eine Qualitätsverschlechterung. Egal, ob sie mit bloßem Auge sichtbar ist oder nicht.

Will man ein JPG nur in 90°-Schritten drehen, dann muß man es nicht komplett dekodieren. Es reicht ein Dekodierung bis zu dem Schritt, in dem beim Speichern eines neuen Bildes die Verluste entstehen. Diese Koeffizienten (quasi Fließkommazahlen) muß man nur vertauschen oder negieren. Danach kann man sie wieder verlustfrei komprimieren und hat dann ein um x*90° gedrehtes JPG. Dieses enthält nach dem Dekodieren mit einem Bildbearbeitungsprogramm aber noch exakt die gleichen Pixel (Farbwerte) wie das Original-JPG.

Danke - war echt Zeit ;-)

Wen's interessiert - man kann noch viel interessantere Dinge verlustfrei mit JPEG machen, wie z.B. croppen: http://sylvana.net/jpegcrop/losslessapps.html

best, mike
 
ja es geht - siehe z.B. c't Heft 4 / 2005 S 188 ff.
(habe vor kurzem selbst danach gesucht)

Voraussetzung ist
- Drehung um (Vielfache) von 90 Grad (beleibige Drehungen gehen "natürlich" nicht verlustfrei
- die Auflösung des Bildes muss ein Vielfaches der Blockgröße des JPEG-Algortihmus sein. (typisch 8 oder 16 Pixel). Ist das nicht der Fall, so gibt es an den Rändern entsprechend breiten "Abfall".
 
WERBUNG
Zurück
Oben Unten