您的位置:首页 > 其它

欢迎使用CSDN-markdown编辑器

2016-08-26 15:40 211 查看
var

Form1: TForm1;

JPG_HEADER: array[0..2] of byte = (FF,D8, FF);GIFHEADER:array[0..2]ofbyte=(47, 49,46);

BMP_HEADER: array[0..1] of byte = (42,4D);

PNG_HEADER: array[0..3] of byte = (89,50, 4E,47);

TIF_HEADER: array[0..2] of byte = (49,49, $2A);

type

TImageType = (ifUnknown, ifJPG, ifGIF, ifBMP, ifPNG, ifTIF);

implementation

{$R *.dfm}

function TypeToStr(ImageType: TImageType): String;

begin

case ImageType of

ifJPG: Result := ‘Image/JPEG’;

ifGIF: Result := ‘Image/GIF’;

ifPNG: Result := ‘Image/PNG’;

ifBMP: Result := ‘Image/BMP’;

ifTIF: Result := ‘Image/TIFF’;

else

Result := ‘Unknown Type’;

end;

end;

function GetImageType(FileName: String): TImageType;

var

Stream: TFileStream;

MemStr: TMemoryStream;

begin

Result := ifUnknown;

Stream := TFileStream.Create(FileName, fmOpenRead);

MemStr := TMemoryStream.Create;

try

MemStr.CopyFrom(Stream, 5);

if MemStr.Size > 4 then

begin

if CompareMem(MemStr.Memory, @JPG_HEADER, SizeOf(JPG_HEADER)) then

Result := ifJPG

else if CompareMem(MemStr.Memory, @GIF_HEADER, SizeOf(GIF_HEADER)) then

Result := ifGIF

else if CompareMem(MemStr.Memory, @PNG_HEADER, SizeOf(PNG_HEADER)) then

Result := ifPNG

else if CompareMem(MemStr.Memory, @BMP_HEADER, SizeOf(BMP_HEADER)) then

Result := ifBMP

else if CompareMem(MemStr.Memory, @TIF_HEADER, SizeOf(TIF_HEADER)) then

Result := ifTIF;

end;

finally

Stream.Free;

MemStr.Free;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

FileName: String;

it: TImageType;

begin

if OpenDialog1.Execute then

begin

FileName := OpenDialog1.FileName;

it := GetImageType(FileName);

Label1.Caption := TypeToStr(it);

end;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: