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
[47296] Re:Re:Raw to Bmp 에 대해서 질문
진수.네모 [miman101] 1526 읽음    2006-12-03 20:31
감사합니다.

BITMAPFILEHEADER 부분에서 잘못 쓰여지고 있더군요.
그 크기가 계산대로 라면 14byte인데 16byte로 나오고
쓰여진 값도 순서를 달리하여 쓰여지더군요.

그래서 개개별로 써넣었더니 잘 됩니다.

//fwrite(&Bmfh,sizeof(BITMAPFILEHEADER),1,out);
    fwrite(&Bmfh.bfType,2,1,out);
    fwrite(&Bmfh.bfSize,4,1,out);
    fwrite(&Bmfh.bfReserved1,2,1,out);
    fwrite(&Bmfh.bfReserved2,2,1,out);
    fwrite(&Bmfh.bfOffBits,4,1,out);

외랑 님이 쓰신 글 :
: 알려진 문제들 중에 제가 직접 접해본 케이스 중의 하나가 있는데 빌더가 가진 헤더파일 중 bmp 헤더 사이즈가 2 byte 작게 선언된 부분이 있습니다. 빌더 패치를 실행시키면 이것도 해결되는 것으로 알고 있습니다.
: 아니면 헤더파일 열어서 수동으로 헤더를 수정해 줘야 제대로 동작하는 것으로 압니다.
: 예전 헤더와의 호환성 때문이었는지.. 정확히는 모르겠습니다만 비트맵 헤더의 사이즈 때문에 혹시 문제가
: 되어서 VC와 다르게 동작하는 경우였습니다.
: 한번 확인해 보시라고 말씀드려봅니다. ^^
:
: 진수.네모 님이 쓰신 글 :
: : 아래 코드를 visual studio 에서는 동작하는데.
: :
: : 이상하게 builder에 서 수행하면 출력된 bmp 의  헤더에 이상이 있다고 나옵니다.
: :
: : ms 와 다른가요?
: :
: : 감사합니다.
: :
: :
: :
: : #include <WINDOWS.H>
: : #include <stdio.h>
: : #include <stdlib.h>
: :
: : #define BMP_FILE_NAME  0x4d42  //BM
: : #define HEIGHT 256             //이미지의 세로 길이
: : #define WIDTH 256              //이미지의 가로 길이
: : #define COLOR 256              //COLOR 수
: :
: : BYTE Bmp_buffer[HEIGHT][WIDTH];//RAW FILE을 읽에 들이기 위한 저장 공간
: :
: : //---------------------------------------------------------------------------------
: : //RAW FILE을 읽는 함수
: : void Raw_File_Read()
: : {
: :     FILE *in;
: :     char fname[50];
: :     printf("Read File Name or Path=");
: :     gets(fname);
: :
: :     if((in=fopen(fname,"rb"))==NULL) EOF;
: :
: :     int i,j;
: :
: :     for(i=HEIGHT-1;i>=0;i--)
: :     {
: :         for(j=0;j<WIDTH;j++)
: :             Bmp_buffer[i][j]=fgetc(in);
: :     }
: :
: :     fclose(in);
: : }
: :
: : //---------------------------------------------------------------------------------
: : //BMP FILE을 기록하는 함수
: : void Raw_to_Bmp(BITMAPFILEHEADER Bmfh,BITMAPINFOHEADER Bmih,RGBQUAD Bmp_pal[COLOR])
: : {
: :     FILE *out;
: :     char fname[50];
: :     printf("Write File Name or Path=");
: :     gets(fname);
: :
: :     if((out=fopen(fname,"wb"))==NULL)    EOF;
: :
: :     fwrite(&Bmfh,sizeof(BITMAPFILEHEADER),1,out);   
: :     fwrite(&Bmih,sizeof(BITMAPINFOHEADER),1,out);
: :     fwrite(Bmp_pal,sizeof(RGBQUAD),COLOR,out);
: :     fwrite(Bmp_buffer,sizeof(BYTE),HEIGHT*WIDTH,out);
: :    
: :     fclose(out);
: : }
: :
: : //---------------------------------------------------------------------------------
: : //MAIN 함수
: : void main(void)
: : {
: :     int i;
: :    
: :     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));
: :
: :     //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_File_Read();
: :
: :     Raw_to_Bmp(bmfh,bmih,bmp_pal);
: : }

+ -

관련 글 리스트
47282 Raw to Bmp 에 대해서 질문 진수.네모 1492 2006/12/01
47286     Re:Raw to Bmp 에 대해서 질문 외랑 2300 2006/12/02
47296         Re:Re:Raw to Bmp 에 대해서 질문 진수.네모 1526 2006/12/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.