• 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.Execute then   //OpenDialog1是一个文件打开对话框,在Delphi组件面版的Dialog页中可以找到。
       begin
         MyImage:=TMemoryStream.Create; //建立内存流对象
    try
         MyImage.LoadFromFile(OpenDialog1.FileName); //把刚刚用户选择的文件载入到内存流中
         MyImage.Position := 0;   //移动指针到最开头的位置
         if MyImage.Size = 0 then   //如果文件大小等于0,那么
         begin
           //错误
           ShowMessage('错误');
           Exit;
         end;
         MyImage.ReadBuffer(Buffer,2); //读取文件的前2个字节,放到Buffer里面

         if Buffer=$4D42 then //如果前两个字节是以4D42[低位到高位]
         begin
           ShowMessage('BMP'); //那么这个是BMP格式的文件
         end
         else if Buffer=$D8FF then //如果前两个字节是以D8FF[低位到高位]
        begin
             //JPEG
           ShowMessage('JPEG'); //........一样 下面不注释了
         end
         else if Buffer=$4947 then
         begin
             //GIF
           ShowMessage('GIF');
         end
         else if Buffer=$050A then
         begin
             //PCX
           ShowMessage('PCX');
         end
         else if Buffer=$5089 then
         begin
             //PNG
           ShowMessage('PNG');
         end
         else if Buffer=$4238 then
         begin
            //PSD
           ShowMessage('PSD');
         end
         else if Buffer=$A659 then
         begin
            //RAS
           ShowMessage('RAS');
         end
         else if Buffer=$DA01 then
         begin
             //SGI
           ShowMessage('SGI');
         end
         else if Buffer=$4949 then
         begin
             //TIFF
           ShowMessage('TIFF');
         end
         else   //如是其他类型的文件的话,直接显示错误
         begin
             //ERR
           ShowMessage('ERR');
         end; //if 
       end; //if
    finally
    MyImage.Free;   //释放内存流对象
    end;
    end;
    上面的过程只是简单的判断文件的前2个字节,如果想更加精确一点的话,可以把文件最后2个字节也判断上。

    http://delphi.seezp.com/a/tx/2016/0615/278.html

    http://delphi.seezp.com/a/tx/

  • 相关阅读:
    TPM 程序设计基础 2-1 :具体函数调用步骤及解析示例
    TPM 程序设计基础 1-2-4 :新的 PCR 命令
    TPM 程序设计基础 1-2-3 :Tspi_PcrComposite 类定义
    TPM 程序设计基础 1-2-2 :旧的 PCR 命令
    TPM 程序设计基础 1-2-1 :Tspi_Context 类定义
    TPM 程序设计基础 1-1 :所用 Tspi 函数目录
    TPM 程序设计基础 0-0 :课设程序结构说明
    TPM 课设程序运行基础与要求
    jstl和EL表达式混合使用
    在eclipse中从cvs下载项目,再部署到tomcat常见错误!
  • 原文地址:https://www.cnblogs.com/findumars/p/5803791.html
Copyright © 2020-2023  润新知