Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi JPG-Datei drehen und speichern -> Verlust der Exif-Daten (https://www.delphipraxis.net/52770-jpg-datei-drehen-und-speichern-verlust-der-exif-daten.html)

axelf98 3. Sep 2005 13:15


JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
Hallo, ich bin auf der Suche nach einer Möglichkeit JPG Bilder zu bearbeiten und dann (mitsamt der Exif-Infos) wieder zu speichern.
Das klappt auch soweit ganz gut:
Delphi-Quellcode:
  Extention := Ansilowercase(Extractfileext(DName));
  if (Extention = '.jpg') or (Extention = '.jpeg') then
  begin
   Jpg := TJPEGImage.Create;
   JPG.LoadFromFile(DName);
   BITMap.Assign(JPG);
   if Grad = 90 then
    Drehen90Grad(BITMAP) ELSE
    Drehen270Grad(BITMAP);
   JPG.Assign(Bitmap);
   JPG.SaveToFile(DName);
   JPG.Free;
  end;
Leider werden hierbei die vorher vorhandenen Exif-Infos gelöscht. Wie kann man das verhindern? (Die Windows Bildvorschau schafft das doch auch...)

Luckie 3. Sep 2005 13:19

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Bitmaps kennen keine Exif-Daten. Wo denkst du bleiben die, wenn du dein JPG in eine Bitmap verwandelst? ;) Da hilft nur vorher auslesen, merken und nachher wieder reinschreiben.

SMO 3. Sep 2005 13:27

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Wenn du die JPEGs nur um 90° drehen willst, könntest du dir mal diese JPEG Unit anschauen, die kann das nämlich sogar verlustfrei (ohne Neukompression des JPEG Bildes). Ob dabei die Exif Daten erhalten bleiben weiß ich nicht, müsstest du selbst testen.

axelf98 3. Sep 2005 13:40

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Zitat:

Zitat von Luckie
Bitmaps kennen keine Exif-Daten. Wo denkst du bleiben die, wenn du dein JPG in eine Bitmap verwandelst?

Ich dachte, dass TJPGImgage vielleicht die Exifdaten drinlässt...

Luckie 3. Sep 2005 13:42

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Kann sein, aber du machst aus dem JPG ja vorher ein Bitmap, drehst es und erzeugst daraus wieder ein JPG. Woher soll das aus dem Bitmap erzeuget JPG jetzt die Exif-Daten bekommen?

axelf98 3. Sep 2005 22:58

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Ich würd ja gern die JPG-Unit ausprobieren, aber leider komm ich wie schon mal nicht ins Borland-Network rein... Immer kommt eine serverseitige Fehlermeldung - Cookies sind eingeschaltet und auch schon gelöscht und neu gesetzt worden...
Könnte mir jemand die Datei laden und schicken?
*liebguck*

DANKE! Es ist für mein bisher größtest und nützlichstes Programm: Es löst Powerpoint in vielen Bereichen ab! - Aber mehr, wenn es fertig wird. Und je schneller ich das Dreh-Problem behoben hab kommt auch das Progamm raus!

Geisterfeifer 5. Okt 2005 07:11

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Danke, daß Du die Frage gestellt hast. Ich habe die gleiche Herrrausforderung vor mir und die Unit ist genau die Lösung. EXIF bleibt erhalten. Wenn Du mir eine Mail schickst, schicke ich Dir das Teil zu.

wolfgang.wendefeuer [an Domain] wendefeuer.de

toms 29. Apr 2008 19:26

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Zitat:

Zitat von SMO
Wenn du die JPEGs nur um 90° drehen willst, könntest du dir mal diese JPEG Unit anschauen, die kann das nämlich sogar verlustfrei (ohne Neukompression des JPEG Bildes). Ob dabei die Exif Daten erhalten bleiben weiß ich nicht, müsstest du selbst testen.


Neuer Link (JPEG Unit): http://cc.codegear.com/Item/19723

Larsi 14. Jul 2008 13:19

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Auch wenn es schon ein bisschen länger her ist habe ich das gleiche Problem. Allerdings ist die jpeg.dcu bei dem Download den du verlinkt hast nicht für Code Gear Delphi 2007. Kann man die irgendwie so verändern dass sie geht oder gibt es vielleicht auch schon andere Möglichkeiten Jpegs ohne verlust der exif informationen zu drehen?


Müssste das ganze nicht gehen wenn beispielsweise einer mit Delphi 5 - Delphi 2005 die Dcu Datei als Package installiert und dann im Lib Verzeichnis die erstelle Pas Datei mir schickt? Wäre cht sehr nett.

Klaus01 14. Jul 2008 18:55

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Hallo Larsi,
sicher Dir doch vor dem Rotieren die exif Daten und hänge sie anschließend wieder an.
Nützliches zum Lesen findest Du hier.
Und ein ActiveX Steuerelement hier.

Grüße
Klaus

igel457 14. Jul 2008 19:38

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Liste der Anhänge anzeigen (Anzahl: 1)
Falls es jemanden interessiert... Ich habe hier noch eine kleine Bibliothek mit der man JFIF/JPEG Dateien Chunk-für-Chunk auseinander nehmen kann. Vielleicht kann jemand mit dem Code etwas anfangen.

Matze 14. Jul 2008 19:43

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Ich nutze zum Speichern und neuen Schreiben der Exif-Daten übrigens die Unit dExif. Vielleicht hilft das dem ein oder anderen weiter.

Hador 14. Jul 2008 20:08

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Zum direkten, verlustfreiehn drehen kannst du dir mal folgendes Projekt anschauen:

http://jpegclub.org/jpegtran/

Larsi 15. Jul 2008 13:16

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Wo kann man sich denn die Unit dafür downloaden auf der Website? Ich wiederhole aber auch nochmal meine Frage ob es möglich ist dass ein Delphi 5 bis Delphi 10 Benutzer die dcu Datei über ein Package einschließt und dann die Pas Datei mir schickt? Geht das überhaupt?

Larsi 16. Jul 2008 13:01

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Push.

Larsi 17. Jul 2008 17:04

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
PUSH

Klaus01 17. Jul 2008 17:11

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Hallo Larsi,

was stört Dich denn daran die Unit von Matze zu verwenden?

Hast Du es damit jemals versucht?

Grüße
Klaus

Larsi 17. Jul 2008 17:22

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Die benutze ich bereits aber ich finde es sehr unschön die jpeg datei erst zu ner Bitmap Datei zu machen, dann drehen dann wieder zurück konvertieren dann die exif informationen die man vorher zwischen gespeichert hat wieder einfügen. Diese Unit benutze ich auch schon zum Auslesen der Informationen. Deshalb nochmal meine Frage. Kann man diese dcu Datei irgendwie so machen, dass ich sie verwenden kann? Kann mir jemand einen Downloadlink für diese Projekt geben?


MFG Lars Wiltfang

Klaus01 17. Jul 2008 17:55

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Hallo Larsi,

hast Du schon einmal beim Autor nachgefragt?

Gabriel Corneanu
gabrielcorneanu(AT)yahoo(DOT)com

Die Chance aus der dcu eine pas Datei zu machen gehen gegen Null oder sind Null.
Ich sehe da keine Möglichkeit.

Grüße
Klaus

Larsi 18. Jul 2008 10:27

Re: JPG-Datei drehen und speichern -> Verlust der Exif-Da
 
Ja habe ich aber noch keine Antwort.

Kann mir jemand einen Downloadlink für diese Projekt geben, was gennant wurde?

DataCool 6. Jul 2020 12:28

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

muss das Thema noch mal vorholen, weil mich das gerade in einem Projekt tangiert.

Hat jemand eine schlanke Unit/Klasse die das Lesen/Interpretieren von Jpg / EXIF "Orientation" ermöglicht ?

Verlustfreies Drehen / Verkleinern, wäre ebenfalls nützlich.

Die Lösungsansätze und Links weiter vorher sind leider etwas outdated.

Benötige eine funktionierende Lösung für "Rio".

Gretes Data

Rollo62 6. Jul 2020 12:40

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
Kommt das in Frage oder besser das ?

Sinspin 6. Jul 2020 12:48

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
So outdated scheint es ja nicht zu sein.
http://jpegclub.org/
Zitat:

The current version is release 9d of 12-Jan-2020
Allerdings ist es feinstes C und nicht Delphi/Pascal. Ich kann da deine Abneigung schon verstehen.

Wenn Dir Aufruf eines externen Programmes und Batchverarbeitung für drehen und verkleinern Ausreicht, ich nehme dafür immer IrfanView.

Benmik 6. Jul 2020 16:16

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
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.

DataCool 6. Jul 2020 16:34

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

ich habe ein recht großes Projekt, wo ich jetzt an einer einzigen Stelle Bilder jeglichen Formats(zu 99% Jpeg & PNG) einlesen muss.
Bei Jpeg müßten diese entsprechend EXIF Orientation gedreht werden, wie ist mir dabei eigentlich relativ egal.

Da es bei den Grafiken um hochwertige "Produktfotos" handelt sollten die natürlich nicht an Qualität verlieren.

Ich hatte nach einer schlanken Delphi Lösung gefragt, weil :

- Ich nicht für dieses eine Feature eine große Komponenten Sammlung einbinden wollte

- Externe Tools(.exe) fallen weg, weil ich das als "unschön" empfinde

- eine DLL-Lösung wäre zwar nicht das gelbe vom Ei aber akzeptabel.


Die Features die ich benötige sind wirklich "nur" :

- jpeg einlesen
- Falls EXIF Orientation vorhanden, diese möglichst verlustfrei verarbeiten

Danke Data

venice2 6. Jul 2020 16:43

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

Bei Jpeg müßten diese entsprechend EXIF Orientation gedreht werden
Ist Jpeg Voraussetzung oder kannst du diese vorher nach Bitmap umlegen?
Dann hätte ich eventuell etwas.

gruss

DataCool 6. Jul 2020 16:46

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

Zitat von venice2 (Beitrag 1468961)
Zitat:

Bei Jpeg müßten diese entsprechend EXIF Orientation gedreht werden
Ist Jpeg Voraussetzung oder kannst du diese vorher nach Bitmap umlegen?
Dann hätte ich eventuell etwas.

gruss

Die Bilder kommen ja als jpeg rein, wenn ich Sie einfach in BMP umwandle sind Sie ja unter Umständen "falsch" gedreht.
Und im BMP Format hast Du dann ja auch nicht mehr die ursprüngliche Information der Orientation.

venice2 6. Jul 2020 16:48

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

Zitat von DataCool (Beitrag 1468962)
Zitat:

Zitat von venice2 (Beitrag 1468961)
Zitat:

Bei Jpeg müßten diese entsprechend EXIF Orientation gedreht werden
Ist Jpeg Voraussetzung oder kannst du diese vorher nach Bitmap umlegen?
Dann hätte ich eventuell etwas.

gruss

Die Bilder kommen ja als jpeg rein, wenn ich Sie einfach in BMP umwandle sind Sie ja unter Umständen "falsch" gedreht.
Und im BMP Format hast Du dann ja auch nicht mehr die ursprüngliche Information der Orientation.

Wenn ich ein Bitmap drehe dann interessiert mich keine Orientation wenn ich die Möglichkeit habe es um 360 Grad zu drehen.
Vielleicht verstehe ich aber auch nicht was du damit bezwecken willst.

Benmik 6. Jul 2020 16:52

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
Hast du meinen Beitrag gelesen?

Willie1 6. Jul 2020 16:54

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
Hallo,
ich habe ein Bildprogramm geschrieben, ca. 10 Jahre alt. Da drehe ich die JPG-Bilder verlustfrei mit GDI+. Die Meta-Daten bleiben erhalten. Das Auslesen des Orientation-Tag erfolgt mit ExifTool von Phil Harvey. Das Programm läuft seit vielen Jahren problemlos.

Gruß Willie.

DataCool 6. Jul 2020 16:57

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

Zitat von Benmik (Beitrag 1468965)
Hast du meinen Beitrag gelesen?

Natürlich, mit ein paar Deiner Ansätze habe ich mich mich auf meiner Suche schon vor Deinem Posting beschäftigt.

- NativJpg, muss ich noch testen.

- SynGdiPlus vom Synopse-Framework, muss ich auch noch testen ob EXIF verarbeitet werden

- die DLL von FreeImage nutzen, steht bei meinen möglichen Lösungen wenn ich keine Native/einfache finde

Benmik 6. Jul 2020 16:58

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

Zitat von Willie1 (Beitrag 1468966)
Das Auslesen des Orientation-Tag erfolgt mit ExifTool von Phil Harvey.

Wie liest du das aus ExifTool aus?

DataCool 6. Jul 2020 17:03

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

Zitat von Willie1 (Beitrag 1468966)
Hallo,
ich habe ein Bildprogramm geschrieben, ca. 10 Jahre alt. Da drehe ich die JPG-Bilder verlustfrei mit GDI+. Die Meta-Daten bleiben erhalten. Das Auslesen des Orientation-Tag erfolgt mit ExifTool von Phil Harvey. Das Programm läuft seit vielen Jahren problemlos.

Gruß Willie.

Genau das bräuchte !!

Willie1 6. Jul 2020 17:05

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
Exiftool ist ein Consolen Programm. Schreib dir die Hilfe von Exiftool in eine Datei und lies sie dir durch.

DataCool 6. Jul 2020 17:06

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hier im Anhang mal 2 Bsp. Bilder, die ich im Netz zum Testen gefunden habe.

Beide werden im Windows Explorer korrekt dargestellt.

In meinem Programm (im TImage) aber nicht.

Deshalb muss ich das Bild verlustfrei anhand des EXIF Tags drehen

Benmik 6. Jul 2020 17:16

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

Zitat von Willie1 (Beitrag 1468971)
Exiftool ist ein Consolen Programm.

Ich kenne Exiftool. Du startest das Programm mit ShellExecute und liest dann den DOS-Output aus?

Benmik 6. Jul 2020 17:19

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

Zitat von DataCool (Beitrag 1468972)
Beide werden im Windows Explorer korrekt dargestellt. In meinem Programm (im TImage) aber nicht.

Der Explorer erkennt - wie viele Programme - die Ausrichtung und dreht die Anzeige (nicht das JPG!) entsprechend. Bei den von dir eingestellten Bildern fehlen aber alle EXIF-Daten. Ist aber egal, ändert ja nichts an der Aufgabenstellung.

Willie1 6. Jul 2020 17:22

AW: JPG-Datei drehen und speichern -> Verlust der Exif-Daten
 
Das liegt daran, dass Windows das Orientation-Tag ausliest und das Bild entsprechend dreht, ohne es zu verändern.

DataCool 6. Jul 2020 17:24

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

Zitat von Willie1 (Beitrag 1468976)
Das liegt daran, dass Windows das Orientation-Tag ausliest und das Bild entsprechend dreht, ohne es zu verändern.

Deshalb, weil TImage das nicht kann, möchte den Orientation-Tag auslesen, das Bild entsprechend drehen und OHNE EXIF dann weiter verarbeiten

Willie1 6. Jul 2020 17:38

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

Ich kenne Exiftool. Du startest das Programm mit ShellExecute und liest dann den DOS-Output aus?
Ich benutze nicht ShellExecute aber das ist hier nicht wichtig. ExifTool ist das beste Programm dazu.

Frage: wie kann ich Zitat von xxx bekommen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz