본문 바로가기
Application/Delphi Lecture

이미지 헤더로 이미지 형태 분석

by 현이빈이 2008. 8. 13.
반응형
var
 SP : TPointer;
 n  : integer;
 ST : TMemoryStream;
 IconHeader : Cardinal;
 jpgHeader : int64;
 EmfHeader : ^DWord;
 WmfHeader : ^LongInt;
begin
 IconHeader := $00010000;
 jpgHeader := $464a1000e0ffd8ff;
 EmfHeader := Pointer(SP + $28);
 WmfHeader := Pointer(SP + n);

ST := TMemorystream.Create;
ST.LoadFromFile(파일네임);
SP := ST.Memory;
n := 0 ;   // 요 n은 Paradox DB에서 BMP를 읽을 때
           // 8byte헤더가 또 따라 붙습니다.  
//비트맵은 파일 첫 두글자가 BM입니다.
if AnsiStrLIComp((SP+n),Pchar('BM'),2) = 0 then begin
    bitmap 처리
end  
else if AnsiStrLIComp((SP+n),@jpgheader,8) = 0 then begin
    jpg 처리
end
else if AnsiStrLIComp((SP+n),Pchar('GIF'),3) = 0 then
   GIF 처리
else if (EmfHeader^ = ENHMETA_SIGNATURE) then begin   //EMF
   Emf 처리
end
else if WmfHeader^ = LongInt($9AC6CDD7) then   //WMF
   Wmf 처리
else if AnsiStrLIComp((SP+n),@IconHeader,4) = 0 then
   Icon 처리 ;
반응형