Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi JPG resizen - Exif Daten erhalten (https://www.delphipraxis.net/122398-jpg-resizen-exif-daten-erhalten.html)

isilive 15. Okt 2008 14:02


JPG resizen - Exif Daten erhalten
 
Hallo Community!

Ich habe jetzt schon sehr viel zum Thema gesucht und gelesen, bin aber - als Anfänger - noch nicht ganz dahintergestiegen:

Ich schreibe an einem Image-Resizer für jpgs, der ein paar Funktionen bietet die ich bis jetzt vermisst habe - so weit, so gut - er funktioniert auch schon.

Jetzt möchte ich, dass die Exif-Daten der Fotos erhalten bleiben.

Gibt es eine Library, die das direkte Bearbeiten von JPGs ermöglicht wobei die Exif Daten erhalten bleiben? ('EnhancedJPEG Implementation' von Gabriel Corneanu hab ich schon ausprobiert - aber die ermöglich nur das verlustfreie drehen, nicht jedoch das resizen von Bildern.)

Oder ist es einfacher die Exif Daten auszulesen und dann wieder reinzuschreiben?

Was ist der einfachere Weg? Und kann ich die benötigten Libraries in TurboDelphi 2006 installieren?

Gruss Stefan

Onkelrossie 15. Okt 2008 16:27

Re: JPG resizen - Exif Daten erhalten
 
Hallo,

hast du es schonmal mit den Jedi Komponenten (JVCL) versucht? Da sind verschiedene Werkzeuge zum bearbeiten von Images und noch vieles mehr dabei. Das was du vieleicht suchst ist TJvImage.


MfG
Onkelrossi

isilive 16. Okt 2008 20:05

Re: JPG resizen - Exif Daten erhalten
 
Hallo OnkelRossi!

Danke für den Tipp, aber was ich bis jetzt über die JVCL gefunden habe war mir zu umfangreich und undurchsichtig. Ich habe momentan nicht extrem viel Freizeit zum Programmieren - für weitere Tipps wäre ich sehr dankbar!
Kann ich dEXIF unter TurboDelphi2006 installieren, und wie verwendet man dann sowas (hab erst letzte Woche mit Delphi angefangen)?
Oder bringt mich die Graphics32 schneller ans Ziel?

Danke, Stefan

Hador 16. Okt 2008 20:13

Re: JPG resizen - Exif Daten erhalten
 
Ich meine folgende Erweiterung der Standard JPEG-Unit von Delphi übernimmt auch die EXIF-Daten.
Zumindest tut sie das, wenn man das Bild rotiert:

http://cc.codegear.com/Item/19723

Matze 16. Okt 2008 21:31

Re: JPG resizen - Exif Daten erhalten
 
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:

Delphi-Quellcode:
uses dEXIF; // einfach ganz oben dazuschrieben
Dann legst du eine Variable für die EXIF-Infos an (bsp. im private-Abschnitt):

Delphi-Quellcode:
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

isilive 17. Okt 2008 03:41

Re: JPG resizen - Exif Daten erhalten
 
@Hador: Wie ich schon im ersten Beitrag geschrieben habe. Die enhanced JPEG Library von Gabriel Corneanu dreht die Bilder verlustfrei, aber sie kann sie nicht resizen. Danke trotzdem.

Matze vielen Dank!! Das hilft mir gewaltig weiter.
Konnte es schon zum laufen bringen! :spin:

Für das Speichern musste ich kurz probieren, weil McGuire in seiner mitgelieferten Textdatei 'ImgData.WriteEXIF(...)' statt ImgDataJPG.WriteEXIF) verwendet und 'SaveEXIF(...)' nicht funktionierte, weil ich diese erst Prozedur nicht eingebunden hab. Ich weiss, es ist schon spät :stupid:

Danke einstweilen! :cheers:

Bambi 2. Jun 2010 10:17

Re: JPG resizen - Exif Daten erhalten
 
Hallo Leute,
aus gegebenem Anlass möcht ich diesen Thread wieder ausgraben.
Hab ein ähnliches Problem, die Lösung mit der dEXIF gefällt mir (schön einfach...), jedoch kann ich die dEXIF nicht mehr finden (die oben angegebene Quelle existiert nicht mehr.
Gibt es die noch irgendwo anders zum runterladen, und vor allem läuft die mit Delphi 5 (hab leider kein Geld für ein Update)?
Oder gibts noch andere Möglichkeiten (am besten über ne Unit), die EXIF-Daten von einer Datei zur anderen zu übertragen (ohne Änderung!)?

Danke für eure Hilfe
Bambi

isilive 2. Jun 2010 15:05

Re: JPG resizen - Exif Daten erhalten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab zwar schon eine Weile nichts mehr mit dEXIF gemacht, aber hier ist eine Seite mit CCR-Exif das könnte auch klappen (hab's mir aber noch nicht wirklich genau angeschaut).


Was dEXIF betrifft so denke ich, dass es für Gerry in Ordnung ist wenn ich die Komponente hier poste, da sie immer OpenSource war :thumb: und seine Seite tatsächlich offline gegangen ist...

Bambi 3. Jun 2010 14:07

Re: JPG resizen - Exif Daten erhalten
 
Super, funktioniert prima, gute Arbeit! :thumb:
Nur eine Änderung in der dIPTC war nötig: mein Delphi kennt die CaseSensitive-Eigenschaft von TStringList nicht, geht aber auch ohne, wird ja ohnehin false gemacht.

BTW: Gibt es irgendie eine Beschreibung oder so, was die einzelnen Funktionen könne, und wie man sie anwendet? so teilweise hab ichs schon überrissen, aber ist ja doch ne Menge...

Gruß vom Bambi


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 Uhr.

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