|
알려진 문제들 중에 제가 직접 접해본 케이스 중의 하나가 있는데 빌더가 가진 헤더파일 중 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);
: }
|