AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi JPG resizen - Exif Daten erhalten
Thema durchsuchen
Ansicht
Themen-Optionen

JPG resizen - Exif Daten erhalten

Ein Thema von isilive · begonnen am 15. Okt 2008 · letzter Beitrag vom 3. Jun 2010
Antwort Antwort
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#1

JPG resizen - Exif Daten erhalten

  Alt 15. Okt 2008, 14:02
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
Stefan
  Mit Zitat antworten Zitat
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#2

Re: JPG resizen - Exif Daten erhalten

  Alt 15. Okt 2008, 16:27
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
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#3

Re: JPG resizen - Exif Daten erhalten

  Alt 16. Okt 2008, 20:05
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
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: JPG resizen - Exif Daten erhalten

  Alt 16. Okt 2008, 20:13
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
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: JPG resizen - Exif Daten erhalten

  Alt 16. Okt 2008, 21:31
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
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#6

Re: JPG resizen - Exif Daten erhalten

  Alt 17. Okt 2008, 03:41
@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!

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

Danke einstweilen!
Stefan
  Mit Zitat antworten Zitat
Bambi

Registriert seit: 16. Okt 2009
26 Beiträge
 
Delphi XE5 Professional
 
#7

Re: JPG resizen - Exif Daten erhalten

  Alt 2. Jun 2010, 10:17
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
Stephan
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#8

Re: JPG resizen - Exif Daten erhalten

  Alt 2. Jun 2010, 15:05
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 und seine Seite tatsächlich offline gegangen ist...
Angehängte Dateien
Dateityp: zip dexifv103d_147.zip (808,2 KB, 210x aufgerufen)
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Bambi

Registriert seit: 16. Okt 2009
26 Beiträge
 
Delphi XE5 Professional
 
#9

Re: JPG resizen - Exif Daten erhalten

  Alt 3. Jun 2010, 14:07
Super, funktioniert prima, gute Arbeit!
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
Stephan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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