C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47514] Re:8비트 raw데이타
진수.네모 [miman101] 1284 읽음    2006-12-21 21:59
#define BMP_FILE_NAME   0x4d42  //BM
    #define HEIGHT          144
    #define WIDTH           176
    #define COLOR           256

    BITMAPFILEHEADER bmfh;
    BITMAPINFOHEADER bmih;
    RGBQUAD bmp_pal[COLOR];
   
    //BITMAPFILEHEADER 설정
    bmih.biSize=sizeof(BITMAPINFOHEADER);
    bmih.biWidth=WIDTH;
    bmih.biHeight=HEIGHT;
    bmih.biPlanes=1;
    bmih.biBitCount=8;
    bmih.biCompression=BI_RGB;
    bmih.biSizeImage=WIDTH*HEIGHT;
    bmih.biXPelsPerMeter=0;
    bmih.biYPelsPerMeter=0;
    bmih.biClrUsed=COLOR;
    bmih.biClrImportant=0;

    //BITMAPINFOHEADER 설정
    bmfh.bfType=BMP_FILE_NAME;
    bmfh.bfSize=sizeof(BITMAPFILEHEADER)+((COLOR)*sizeof(RGBQUAD))+sizeof(BITMAPINFOHEADER)
                +bmih.biSizeImage;
    bmfh.bfReserved1=0;
    bmfh.bfReserved2=0;
    bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
        +(COLOR*sizeof(RGBQUAD))-2;

    //PALETTE 설정
    for(i=0;i<COLOR;i++)           //8bit-> 256 monochrome 설정
    {
        bmp_pal[i].rgbRed=i;
        bmp_pal[i].rgbGreen=i;
        bmp_pal[i].rgbBlue=i;
        bmp_pal[i].rgbReserved=0;
    }

이 정보를 raw 파일 앞에다 붙여 넣으면 bmp 가 됩니다.
중간에 bmfh.bfOffBits = 부분에서 -2 한부분이 있는데 이는 빌더에서만 이상하게도 사이즈가 다르게 나와 -2 해준겁니다.
visual ms 에서는 -2 안쓰고해야 됩니다.

그리고 bmfh 는 다음과 같이 써넣기 하면 올바른 bmp 파일이 되지 않습니다.
                fwrite(&Bmfh,sizeof(BITMAPFILEHEADER),1,out);   
   
이부분을 풀어서 bmfh.bfType, bfSize... 등 5개 따로 따로 써넣어주어야 합니다. 빌더에서만.. 왜그런지는 @.@ 모름.
나머지는 다음과 같은순서대로 쓰면됩니다.

    fwrite(&Bmih,sizeof(BITMAPINFOHEADER),1,out);
    fwrite(Bmp_pal,sizeof(RGBQUAD),COLOR,out);
    fwrite(raw_buffer,sizeof(BYTE),HEIGHT*WIDTH,out);

위 순서대로 써 넣으면 완성.



이희성 님이 쓰신 글 :
: 8비트 yuv422 y cr cb로우 데이타를 비트맵으로 변환하려 할때?
: 빌더 폼에 어떤식으로 뿌려주는건가요..? 대충 사이트 읽어보았는데 잘 모르겠네여..

+ -

관련 글 리스트
47513 8비트 raw데이타 이희성 1103 2006/12/21
47514     Re:8비트 raw데이타 진수.네모 1284 2006/12/21
47516         Re:Re:8비트 raw데이타 이희성 893 2006/12/21
47528             간단하게 만들어 본 예제 입니다. 진수.네모 1269 2006/12/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.