![]() |
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 |
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 |
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 ![]() Oder bringt mich die ![]() Danke, Stefan |
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: ![]() |
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:
Dann legst du eine Variable für die EXIF-Infos an (bsp. im private-Abschnitt):
uses dEXIF; // einfach ganz oben dazuschrieben
Delphi-Quellcode:
Ich nutze das bei mir dann wie folgt (das geht auch schöner ohne globale Variable, aber für den Anfang reicht's).
ImgData: TImgData;
Deklaration der folgenden Prozeduren (ebenfalls im private-Abschnitt):
Delphi-Quellcode:
Und die eigentlichen dann im implementation-Teil:
procedure ReadEXIF(FileName: string);
procedure SaveEXIF(NewJPEG: TJPEGImage; FileName: string);
Delphi-Quellcode:
Der Aufruf erfolgt so:
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;
Delphi-Quellcode:
Grüße, Matze
// 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; |
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: |
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 |
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
![]() 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... |
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 10:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz