Q&A

  • a.txt를 a.jpg로 확장자만 바꾼후 이미지에 올리면 에러가 나요....
a.txt를 이름바꾸기해서 a.jpg로 확장자만 바꾸었습니다...
이미지 컴퍼넌트에서 이파일을 올릴때 에러가 당연히 나겠죠...
a.jpg를 이미지에 올리기 전에 이파일이 .jpg인지 .bmp인지를 확인할수
있는 방법을 찾고 있습니다...

참, 한가지더 있는데있습니다...
모든 그래픽 파일을 미리보기 하는 방법을 가르쳐 주세요....

고수님들의 도움이 필요합니다...
부디...
정말 급한데요...


그럼 즐코하세요...


1  COMMENTS
  • Profile
    김수경 2003.06.10 23:08
    //---------------------------------------------------------------------------
    // 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;
    }
    //---------------------------------------------------------------------------