您的位置:首页 > 其它

从图片的文件头判断文件格式(转)

2010-03-29 21:28 274 查看
以下内容是转回来的,图片的文件头格式:

1.JPEG

- 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识)

- 文件结束标识 (2 bytes): $ff, $d9 (EOI)

2.TGA

- 未压缩的前5字节 00 00 02 00 00

- RLE压缩的前5字节 00 00 10 00 00

3.PNG

- 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A

4.GIF

- 文件头标识 (6 bytes) 47 49 46 38 39(37) 61

G I F 8 9 (7) a

5.BMP

- 文件头标识 (2 bytes) 42 4D

B M

6.PCX

- 文件头标识 (1 bytes) 0A

7.TIFF

- 文件头标识 (2 bytes) 4D 4D 或 49 49

8.ICO

- 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20

9.CUR

- 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20

10.IFF

- 文件头标识 (4 bytes) 46 4F 52 4D

F O R M

11.ANI

- 文件头标识 (4 bytes) 52 49 46 46

R I F F

想看更多的文件头的内容,看这个网址:http://www.garykessler.net/library/file_sigs.html

知道了文件头的内容我们可以把文件头的几个字节读到内存然后进行比较就行了以下是代码片断。

MyImage:=TMemoryStream.Create;
MyImage.LoadFromFile(FileName); //把刚刚用户选择的文件载入到内存流中
MyImage.Position := 0; //移动指针到最开头的位置
MyImage.ReadBuffer(Buffer,2); //读取文件的前2个字节,放到Buffer里面
if Buffer=$4D42 then //如果前两个字节是以4D42[低位到高位](因为内存中从左到右是从高位到低位,所以前面说BMP的文件头是$424D,用来和内存中的数据比较时就要反过来,用$4D42进行比较
begin
ShowMessage('BMP'); //那么这个是BMP格式的文件
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: