- 5
- 0
- 约2.4千字
- 约 3页
- 2021-12-10 发布于福建
- 举报
Delphi 从内存流中判断图片格式 _ 街头巷尾
2009-03-19 11:22:55| 分类: 个人日记 | 标签: |字号大中小 订阅
Delphi 从内存流中判断图片格式
利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件,例如
jpg 文件 是 FFD8 ( 从低位到高位就要反过来 D8FF 下面都是一样 )
BMP 文件 是 424D 4D42
其他的我就不一一列举了 ,想知道跟多文件类型分别是用什么字符作为文件的开头的话 ,下载个 C32asm 或者 UE 等这类 16 进制编辑器就
可以看到了。
procedure TForm1.Button1Click(Sender: TObject); //Button1 的单击事件
var //声明变量
MyImage:TMemoryStream; // 内存流对象
Buffer:Word;
i:integer;
begin
if OpenDialog1.E xecute then //OpenDialog1 是一个文件打开对话框,在 Delphi 组件面版的 Dialog 页中可以找到。
begin
MyImage:=TMemoryStream.Create; // 建立内存流对象
try
MyImage.LoadFromFile(OpenDialog1.FileName); // 把刚刚用户选择的文件载入到内存流中
MyImage.P osition := 0; //移动指针到最开头的位置
if MyImage.Size = 0 then // 如果文件大小等于 0 ,那么
begin
// 错误
Show Message( 错误 ) ;
E xit;
end;
MyImage.ReadBuffer(Buffer,2); // 读取文件的前2个字节,放到 Buffer 里面
if Buffer=$4D42 then // 如果前两个字节是以 4D42[ 低位到高位 ]
begin
Show Message( BMP); //那么这个是 BMP 格式的文件
end
else if Buffer=$D8FF then //如果前两个字节是以 D8FF[低位到高位 ]
begin
//JPEG
Show Message( JPEG); // 一样 下面不注释了
end
else if Buffer=$4947 then
begin
//GIF
Show Message( GIF);
end
else if Buffer=$050A then
begin
//PCX
Show Message( PCX);
end
else if Buffer=$5089 then
begin
//PNG
Show Message( PNG);
end
else if Buffer=$4238 then
begin
//PSD
Show Message( PSD);
end
else if Buffer=$A659 then
begin
//RAS
Show Message( RAS);
end
else if Buffer=$DA01 then
begin
//SGI
Show Message( SGI);
end
else
原创力文档

文档评论(0)