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
[47286] Re:Raw to Bmp 에 대해서 질문
외랑 [] 2299 읽음    2006-12-02 17:44
알려진 문제들 중에 제가 직접 접해본 케이스 중의 하나가 있는데 빌더가 가진 헤더파일 중 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 에 대해서 질문 외랑 2299 2006/12/02
47296         Re:Re:Raw to Bmp 에 대해서 질문 진수.네모 1526 2006/12/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.