Einzelnen Beitrag anzeigen

e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
156 Beiträge
 
Delphi 6 Enterprise
 
#1

EXIF auf anderes JPEG übertragen

  Alt 28. Okt 2013, 10:43
Hallo!

Wie kann man den\die\das (oder wie auch immer) EXIF von einem JPEG auf ein anderes übertragen?

Hintergrund: Durch die Bildverarbeitung mit verschiedenen Grafikprogrammen gingen die EXIFs verloren. Bisher hat das niemand gestört, doch nun wären diese wichtig. Die orginalen JPEGs gibt's zum Glück noch, doch wäre es wohl bedeutend einfacher die EXIFs auf die bearbeiteten JPEGs zu übertragen als die Grafikbearbeitung nochmals zu wiederholen.

Weiß jemand wie man das am besten machen kann? Ich habe mich mal mit dEXIF beschäftigt. Leider bekomme ich das allerdings nicht so richtig hin.

Delphi-Quellcode:
procedure TForm1.CopyEXIF(const FileNameEXIFSource,FileNameEXIFTarget: string);
var ImgData: TImgData;
     Data: string; // EXIF-Daten
     JPEGImage: TJPEGImage;
begin
  ImgData:= TimgData.Create;
  try
    // Zielbild laden und EXIF-Daten zwischenspeichern
    ImgData.BuildList:= GenAll;
    ImgData.ProcessFile(FileNameEXIFSource);
    if ImgData.HasEXIF then begin
      Data:= ImgData.GetDataBuff;

      // Quellbild laden
      ImgData.BuildList:= GenAll;
      ImgData.ProcessFile(FileNameEXIFTarget);
      if not ImgData.HasEXIF or
         (MessageDLG('Die Datei '''+FileNameEXIFTarget+''' hat selbst ein EXIF! Soll dieser wirklich überschrieben werden?',
                     mtConfirmation,[mbYes,mbNo],0)=mrYes)then begin
        JPEGImage:= TJPEGImage.Create;
        try
          JPEGImage.LoadFromFile(FileNameEXIFTarget);
          // EXIF-Daten kopieren
          ImgData.SetDataBuff(Data);
          ImgData.WriteEXIFjpeg(JPEGImage,FileNameEXIFTarget);
        finally
          JPEGImage.Free;
        end;
      end;
    end
    else MessageDLG('Die Datei '''+FileNameEXIFSource+''' hat kein EXIF!',mtError,[mbOk],0);
  finally
    FreeAndNil(ImgData);
  end;
end;
Habe ich da einen Denkfehler drin? Oder geht das mit dEXIF gar nicht?

Gruß
e-gon
  Mit Zitat antworten Zitat