zoukankan      html  css  js  c++  java
  • delphi编程如何判断图片文件的真实类型?

    本文主要讲解了如何判断一个图片文件的真实类型,并不是从后缀名来判断类型的方法:
    
    以下是引用片段:
    
    unit Unit55;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TImageType = (IT_None, IT_Error, IT_Bmp, IT_JPEG, IT_GIF, IT_PCX, IT_PNG,
        IT_PSD, IT_RAS, IT_SGI, IT_TIFF);
    
      TForm55 = class(TForm)
        OpenDialog1: TOpenDialog;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form55: TForm55;
    
    implementation
    
    {$R *.dfm}
    
    function CheckImageType(FileName: string): TImageType;
    var
      MyImage: TMemoryStream;
      Buffer: Word;
    begin
      MyImage := TMemoryStream.Create;
      try
        MyImage.LoadFromFile(FileName);
        MyImage.Position := 0;
        if MyImage.Size = 0 then // 如果文件大小等于0,那么错误(
        begin
          Result := IT_Error;
          Exit;
        end;
        MyImage.ReadBuffer(Buffer, 2); //读取文件的前2个字节,放到Buffer里面
    
        case Buffer of
          $4D42:
            Result := IT_Bmp;
          $D8FF:
            Result := IT_JPEG;
          $4947:
            Result := IT_GIF;
          $050A:
            Result := IT_PCX;
          $5089:
            Result := IT_PNG;
          $4238:
            Result := IT_PSD;
          $A659:
            Result := IT_RAS;
          $DA01:
            Result := IT_SGI;
          $4949:
            Result := IT_TIFF;
        else
          Result := IT_None;
        end;
      finally
        MyImage.Free;
      end;
    end;
    
    procedure TForm55.Button1Click(Sender: TObject);
    begin
      if not OpenDialog1.Execute then
        Exit;
      if CheckImageType(OpenDialog1.FileName)<>IT_Bmp then
        showmessage('不是BMP格式');
    
    end;
    
    end.
    
    
  • 相关阅读:
    spring的bean的属性注入
    spring中bean的常用属性
    spring Code(spring 核心)
    mybatis的缓存
    mybatis 调用存储过程
    mybatis的动态sql
    mybatis的关系映射
    mybatis添加信息自动生成主键
    mybatis传递参数的方法
    如何编写跨平台的Java代码
  • 原文地址:https://www.cnblogs.com/beeone/p/1792825.html
Copyright © 2011-2022 走看看