Hallo,
ja dEXIF kannst du nutzen. Kopiere dazu die dEXIF.pas in das Verzeichnis deines Projekts oder füge den Pfad zum Bibliothekspfad in den Delphi-Optionen hinzu (ersteres ist wohl einfacher). Binde dann die
unit in dein Projekt ein:
uses dEXIF; // einfach ganz oben dazuschrieben
Dann legst du eine Variable für die EXIF-Infos an (bsp. im private-Abschnitt):
ImgData: TImgData;
Ich nutze das bei mir dann wie folgt (das geht auch schöner ohne globale Variable, aber für den Anfang reicht's).
Deklaration der folgenden Prozeduren (ebenfalls im private-Abschnitt):
Delphi-Quellcode:
procedure ReadEXIF(FileName: string);
procedure SaveEXIF(NewJPEG: TJPEGImage; FileName: string);
Und die eigentlichen dann im implementation-Teil:
Delphi-Quellcode:
procedure TForm1.ReadEXIF(FileName: string);
begin
ImgData.ProcessFile(FileName);
if not ImgData.HasMetaData() then
exit; // nicht sonderlich sauber
if ImgData.HasThumbnail then
ImgData.ExifObj.ProcessThumbnail;
end;
procedure TForm1.SaveEXIF(NewJPEG: TJPEGImage; FileName: string);
begin
ImgData.WriteEXIFjpeg(NewJPEG, FileName);
end;
Der Aufruf erfolgt so:
Delphi-Quellcode:
// EXIF-Infos einlesen
ReadEXIF('c:\...\deineDatei.jpg');
MyJPEGImage := TJPEGImage.Create;
try
MyJPEGImage.LoadFromFile(...);
// Hier kannst du das Bild nun nach Belieben ändern
// ...
// EXIF-Infos zurückschreiben und TJPEGImage speichern
SaveEXIF(MyJPEGImage, 'c:\...\neuesBild.jpg');
finally
FreeAndNil(MyJPEGImage);
end;
Grüße, Matze