用流文件方式打开文件,如果是以‘FF D8’开头,‘FF D9’结尾的话,基本可以判定为JPG文件。当然有些人习惯在文件尾追加一些相关信息这就是另外的事了。
function JudegeFileIsJpg(const AFile: string): Integer;
var
tmpByte: array[0..3] of Byte;
begin
Result := -1;
if FileExists(AFile) then
begin
Result := 0;
with TFileStream.Create(AFile, fmOpenRead) do
try
Position := 0;
Read(tmpByte[0], 1);
Read(tmpByte[1], 1);
Position := Size - 2;
Read(tmpByte[2], 1);
Read(tmpByte[3], 1);
if (tmpByte[0]=$FF) and (tmpByte[1]=$D8) then
begin
Result := 1;
if (tmpByte[2]=$FF) and (tmpByte[3]=$D9) then
Result := 2;
end;
finally
Free;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case JudegeFileIsJpg('E:/TEST.jpg') of
-1: ShowMessage('文件不存在!');
0: ShowMessage('不是JPG文件!');
1: ShowMessage('可能是JPG文件!');
2: ShowMessage('是JPG文件!');
end;
end;