AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi JPG (oder JPEG) und Kommentar oder Exif-Daten
Thema durchsuchen
Ansicht
Themen-Optionen

JPG (oder JPEG) und Kommentar oder Exif-Daten

Ein Thema von Ralf Stehle · begonnen am 5. Sep 2007 · letzter Beitrag vom 30. Sep 2007
 
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#1

JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 08:03
ich möchte in Jpg-Bilddateien kurze Beschreibungen über das Bild speichern.
Dafür bietet sich das Exif-Format an

Informationen über das Exif-Format in JPG´s gibt es im Internet z.B. bei
EXIF-Daten in JPEG-Dateien.pdf oder http://www.exif.org/

Entsprechend dem Tutorial EXIF-Daten in JPEG-Dateien.pdf habe ich versuchsweise mit folgenden Code
direkt nach dem Header FF D8 die Exif-Sequenz
FF-D8-FF-E1-HL-LL-45-78-69-66-00-00-49-49-2A-00-08-00-00-00
eingefügt, wobei für die Satzlänge HL LL = 00 19 = Gesamtlänge von 25 Zeichen eingegeben wird.

Leider führt das Beispiel zu einem nicht mehr lesbaren Format. Wahrscheinlich darf die FF D8-Sequenz auch nicht direkt nach den ersten 2 Bytes eingefügt werden oder der Aufbau stimmt nicht (?!)

Delphi-Quellcode:
{******************************************************************************}
{*                             Exif-Daten ändern                              *}
{******************************************************************************}
procedure TForm1.WriteExifStream(SelectedRoot, SelectedFile: string);
var
  fs: TFileStream;
  ba, bb: array of byte;
  i: integer;
begin
  if AnsiLastChar(SelectedRoot)^ <> '\then SelectedRoot := SelectedRoot + '\';

  fs := TFilestream.Create(SelectedRoot + SelectedFile ,fmopenread or fmShareDenyNone);
  SetLength(ba, fs.Size);
  fs.Read(ba[0], Length(ba));
  SetLength(ba, fs.Size);
  SetLength(bb, fs.Size + 25);
  fs.Free;
  //zu Testzwecken einfach mal Byte für Byte den Header FF D8 und danachdie kurze Exif-Sequenz
  bb[0] :=255; //FF
  bb[1] :=216; //D8
  bb[2] :=255; //FF
  bb[3] :=225; //E1
  bb[4] :=00; //HL
  bb[5] :=19; //LL
  bb[6] :=69; //45;
  bb[7] :=120; //78;
  bb[8] :=105; //69;
  bb[9] :=102; //66;
  bb[10]:=00;
  bb[11]:=00;
  bb[12]:=73; //49;
  bb[13]:=73; //49;
  bb[14]:=0;
  bb[15]:=8;
  bb[16]:=0;
  bb[17]:=0;
  bb[18]:=0;

  bb[19]:=0;
  bb[20]:=0;
  bb[21]:=0;
  bb[22]:=0;
  bb[23]:=0;
  bb[24]:=0;
  bb[25]:=0;

  //der Rest der Originaldatei wird nach Byte 25 angehängt
  for i := 2 to High(ba) do
  begin
    bb[i+25]:= ba[i];
  end;

  //Buffer bb in neues File
  fs := TFileStream.Create(SelectedRoot + 'Neu.jpg', fmCreate);
  try
    fs.Writebuffer(bb[0], Length(bb));
  finally
    fs.Free;
  end;
end;
Hat jemand einen Tipp für mich wie ich weiterkomme? Es soll auch die Möglichkeit geben, einen einfachen Kommentar in eine JPG einzubinden, ohne gleich die ganze Exif-Geschichte programmieren zu müssen. Das würde mir auch schon genügen

Ralf
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
 


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 19:04 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