//---------------------------------------------------------------------------
// File을 직접 Open하여 Image data를 읽은 후 형식을 비교해 보는 것이 좋을 듯 합니다.
// BMP의 경우 "BM", GIF의 경우 "GIF"로 시작되며
// JPEG의 경우 ... 특정 위치를 비교했습니다(맞을지 모르겠네요 ^^;)
// 즐푸하세요.
// ps. Src가 C++ Builder이 죄송!!!
//---------------------------------------------------------------------------
// File을 직접 Open하여 Image data를 읽은 후 형식을 비교해 보는 것이 좋을 듯 합니다.
// BMP의 경우 "BM", GIF의 경우 "GIF"로 시작되며
// JPEG의 경우 ... 특정 위치를 비교했습니다(맞을지 모르겠네요 ^^;)
// 즐푸하세요.
// ps. Src가 C++ Builder이 죄송!!!
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
FILE *pfp;
PCHAR pchType;
if( argc >= 2 ) {
pfp = fopen( argv[1], "rb" );
if( pfp != NULL ) {
char achBuf[0x10];
int nRead = fread( achBuf, sizeof(achBuf[1]), sizeof(achBuf), pfp );
if( nRead == sizeof(achBuf) ) {
if( (achBuf[0] == 'B') & (achBuf[1] == 'M') ) {
// BMP인 경우
pchType = "BMP";
}
else if( (achBuf[0] == 'G') & (achBuf[1] == 'I') & (achBuf[2] == 'F')) {
// GIF File인 경우
pchType = "GIF";
}
else if( (achBuf[6] == 'J') & (achBuf[7] == 'F') & (achBuf[8] == 'I') & (achBuf[9] == 'F') ) {
// JPEG File인 경우. 이 경우 if( (achBuf[0] == 0xff) & (achBuf[1] == 0xd8) ) 로 비교해도 될 듯 ...
pchType = "JPEG";
}
else {
// 알 수 없는 Image type인 경우
pchType = "???";
}
printf( "%s File의 형식은 '%s'입니다.n", argv[1], pchType );
}
else {
printf( "%s File 읽기 오류.n", argv[1], pchType );
}
fclose( pfp );
}
else {
printf( "%s File을 참조 할 수 없습니다.n", argv[1] );
}
}
else {
printf( "사용법: %s Image_Filen", argv[0] );
}
return 0;
}
//---------------------------------------------------------------------------