欢迎使用CSDN-markdown编辑器

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值