raw file을 어떻게 display 해야할지 몰라 질문합니다. 정말 될듯될듯 하면서
도 안되더군요... *.RAW 파일은 본질적으로 bmp( 물론 Uncompressed) 와 같지
만 Header부분(RGBQUAD 도 물론 없구) Image Data막 쭉있습니다. 당연히 빌더
에서 BMP파일 display 하는게 너무 쉬우니까 raw 파일도 쉬울것 같거덩요...
그런데 실제로 해보려니까 안되군요...흑흑흑 죽겠어요....
좀 도와주세요.. 처음에는 그냥 raw 파일을 포토乍【?bmp를 만든후 header를
띄어서 Raw파일앞에 붙여서(다시말해 bmp만들어서) display 했었는데... 되긴
되거덩요.. 그런데 제가 하려는 건... raw file sequence를 계속 display 해서
video sequence player를 만드는 거라~~ 속도가 영 안따르네요... 당연히 파일
열고 쓰는게 너무 많으니까... 그래서 해야할건 BITMAPINFOF를 정의해 주고 읽
는 부분에 그냥 넣어주려고 했거덩요.... IMAGE가 GRAY IMAGE면 RGBQUAD가 필
요없어서(맞나?) BITMAPINFOHEADER만 써 넣어서 SetDIBitsToDevice 함수를 이
용했습니다. 그런데 실행파일은 만들어 지는데.. 메모리 문제인지 에러가 뜹니
다. access violation at address 004016d8 in module 'raw_pro.exe. Write of
address 77e56a65
raw파일은 포토乍【??지원되고 paint shop pro에서도 지원되는 포맷입니다. 생각보다 상당히 많이 쓰는 포맷이예요... 자료를 더 많이 드리고 질문드리고 싶은데... 그럴수가 없네요...
정말 몇주를 고민하고 있는데 이렇게 해보고 저렇게 해보고 해도 안되네요...
알려주시면 감사히 더 열심히 하겠습니다~~ 에구
제가 오늘해본 소스는 form 위에 버튼하나 딸랑있고 버튼 눌려졌을때 image를
읽어오는 건데요...
//-----------------------------------------------------------------------
----
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "raw2dib.h"
#define Width 256
#define Height 256
//-----------------------------------------------------------------------
----
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------------------------------------------------------------
----
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//-----------------------------------------------------------------------
----
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BITMAPINFOHEADER *bitinfo;
unsigned char *image[256];
FILE *fp;
if( fopen("hands.raw", "rb") == NULL ) return;
bitinfo->biSize = sizeof(BITMAPINFOHEADER);
bitinfo->biWidth = Width;
bitinfo->biHeight = Height;
bitinfo->biPlanes = 1;
bitinfo->biBitCount = 8; //8bit
bitinfo->biCompression = BI_RGB; //uncompressed
bitinfo->biSizeImage = 0;
bitinfo->biXPelsPerMeter = 0;
bitinfo->biYPelsPerMeter = 0;
bitinfo->biClrUsed = 0; // no RGBQUAD
bitinfo->biClrImportant = 0;
for( int i=0; i<Height; i++) fread( image[i], Width, 1, fp );
::SetDIBitsToDevice( Handle, 0, 0, Width, Height, 0, 0, Width,
Height, image, (const BITMAPINFO*)bitinfo, DIB_RGB_COLORS);
fclose( fp );
}
//-----------------------------------------------------------------------
----
|