|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "raw_to_bmp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn_openClick(TObject *Sender)
{
if(OpenDialog1->Execute())
{
fname = OpenDialog1->FileName;
Raw_File_Read();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn_transClick(TObject *Sender)
{
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 -2;
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_to_Bmp(bmfh,bmih,bmp_pal);
int pos = fname.Pos(".");
AnsiString ffname = fname.Delete(pos ,4);
ffname.Insert(".bmp",pos);
Image1->Picture->LoadFromFile("data96.bmp");
}
//---------------------------------------------------------------------------
// general function
//---------------------------------------------------------------------------
void TForm1::Raw_File_Read(void)
{
FILE *in;
int i,j;
if((in = fopen(fname.c_str(),"rb"))==NULL) return;
for(i=HEIGHT-1;i>=0;i--)
{
for(j=0;j<WIDTH;j++)
Bmp_buffer[i][j]=fgetc(in);
}
fclose(in);
}
//---------------------------------------------------------------------------
void TForm1::Raw_to_Bmp(BITMAPFILEHEADER Bmfh, BITMAPINFOHEADER Bmih, RGBQUAD Bmp_pal[COLOR])
{
FILE *out;
int pos = fname.Pos(".");
AnsiString ffname = fname.Delete(pos ,4);
ffname.Insert(".bmp",pos);
if((out=fopen(ffname.c_str(),"wb")) == NULL) return;
//fwrite(&Bmfh,sizeof(BITMAPFILEHEADER)-2,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);
fwrite(&Bmih,sizeof(BITMAPINFOHEADER),1,out);
fwrite(Bmp_pal,sizeof(RGBQUAD),COLOR,out);
fwrite(Bmp_buffer,sizeof(BYTE),HEIGHT*WIDTH,out);
fclose(out);
}
//---------------------------------------------------------------------------
이프로그램을 컴파일하기 위해 필요한 컴포넌트가 있는지요 ? 그래픽 컴포넌트 입니까? 아무리 c++빌더에서 구조체
정의부분이 나와있지를 않습니다...혹여 기본프로그램에 어떤 컴포넌트며 설정을 어떻게 하는지
아시는분 있으십니까?
답변부탁드립니다.. 위에 소스는 진수네모님 소스입니다...제가 프로젝트를 다시 열어 다시 해봐두 안되네요
에러인 즉슨.. 첨부파일에 적절한 값이 존재하지 않는다네요 ? invalid property value... 어케 해야 되나요?
|