Einzelnen Beitrag anzeigen

Benmik

Registriert seit: 11. Apr 2009
456 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten

  Alt 6. Jul 2020, 17:16
Da ich seit Jahren an einem Bildsichtungsprogramm arbeite, habe ich mit doch ziemlich mit JPG beschäftigt, und notgedrungen auch mit den EXIF-Markern und mit verlustfreier Rotation. Ich bin dabei dauernd auf der Suche nach der besten Lösung; allerdings geht es dabei eher um die schnellste Dekompression zu einer Bitmap.

Das reine Auslesen der Ausrichtung ist relativ trivial, das kannst du "zu Fuß" machen; hier gibt es auch eine Routine von mir, die ich dir zur Verfügung stellen kann. CCR-EXIF benutze ich seit Jahren nicht mehr, da es in Einzelfällen immer wieder versagt hat.

Du willst aber auch verlustfrei drehen und dabei die EXIF-Informationen behalten, das ist schon nicht mehr so trivial.
Kurz gesagt ist mein gegenwärtiger Stand der, dass da vier Möglichkeiten in Frage kommen.

Die eine ist NativJPG von Nils Haeck. Schon ein älteres Stück von 2007, aber die Struktur hat sich ja nicht geändert; es ist reines Delphi, also das, was du willst. Ein Nachteil ist, dass NativeJPG nicht mit progressiven und mit Halbton-JPG zurecht kommt; wenn dich das nicht stört, würde ein Blick sich lohnen. NativeJPG kann EXIF-Daten extrahieren und einfügen.

Eine attraktive Möglichkeit ist jpegex, das auf libjpeg-turbo basiert und von Gabriel Corneanu für Delphi portiert wurde, auch schon vor einiger Zeit. Ich habe Gabriel Corneanu vor einigen Jahren mal angeschrieben (er wohnt in Deutschland) und er hat auch geantwortet; aber mittlerweile hat er wohl keine Lust mehr auf seine alten Kamellen von anno dazumal und reagiert nicht mehr. Da ist vielleicht auch diese alte Diskussion bei Stackoverflow interessant, an der sich seinerzeit auch Uwe Raabe beteiligt hat (man beachte aber diese Diskussion). Für mich ist der Nachteil hier, dass ich auf 64-bit angewiesen bin. Mit meinen diesbezüglichen Anstrengungen war ich hier schon fast am Ziel, bevor ich wegen Unbotmäßigkeit und akuter Undankbarkeit in Acht und Bann getan wurde. Vielleicht erbarmt sich GPRSNerd deiner, du bist ja unbelastet. Ich hätte auch gern gelernt, wie man das selber macht, habe mir aber auf Stackoverflow von David Heffernan eine äußerst kalte Schulter geholt (Delphi kann hart sein).

Dann gibt es noch SynGdiPlus vom Synopse-Framework. Das kann auf jeden Fall verlustfrei drehen; bin mir aber im Moment nicht sicher, wie das mit den EXIF-Daten aussieht. SynGdiPlus ist übrigens in meinem Setting der schnellste Dekompressor von JPG noch vor FreeImage.

Zuletzt kannst du noch die DLL von FreeImage nutzen, was ich zurzeit tue. Aber du suchtest ja nach einer nativen Delphilösung.
  Mit Zitat antworten Zitat