Ich versuche, RAW-Dateien der diversen Kamerahersteller anhand ihrer Signaturen zu identifizieren. Hierbei gibt es die extrem nützliche Seite
von Marco Pontobello in Kombination mit der Seite
RAW-Samples und auch
file-extensions.org.
Zur einfachen Identifizierung von JPG-Dateien anhand der charakteristischen ersten beiden Bytes habe ich folgende Prozedur verwendet:
Delphi-Quellcode:
function JPGHeaderOK(const Dateiname:string):Boolean;
var Datei:File; Buf:TBytes;
begin
{$I-}
Try
Buf := [0,0];
Try
AssignFile(Datei,Dateiname);
Reset(Datei, 1);
BlockRead(Datei, Buf[0], 2);
Result := ((Buf[0] = $FF) and (Buf[1] = $D8));
Except
Result := False;
End;
Finally
CloseFile(Datei);
SetLength(Buf,0);
End;
{$I+}
end;
Jetzt sind die Signaturen der RAW-Dateien aber deutlich länger, die einer CRW-Datei von Canon lautet zum Beispiel
49 49 1A 00 00 00 48 45 41 50 43 43 44 52 02 00
.
Wie macht man das am besten? Der Einzelvergleich Buf[0]..Buf[15] kann es doch wohl kaum sein.