合併image存成RAW檔 |
尚未結案
|
adamjr
一般會員 發表:4 回覆:5 積分:1 註冊:2004-09-03 發送簡訊給我 |
我的程式目的是要合成3個Image元件上的影像
存成BMP檔和RAW檔
存成BMP檔沒問題
不過存RAW檔時卻出錯了
RAW一直變大 要強制停止才會停下來
請問為什麼會這樣?
void __fastcall TForm1::Button10Click(TObject *Sender) { AnsiString CurrentDir, TempDir, TempDir1, BMPFileName, RAWFileName; CurrentDir = GetCurrentDir(); TempDir = CurrentDir "\\merge_bmp" ; TempDir1 = CurrentDir "\\merge_raw" ; CreateDir(TempDir); CreateDir(TempDir1); BYTE *ptr; merge_num = merge_num 1; Graphics::TBitmap *bmpBuf=new Graphics::TBitmap; bmpBuf->PixelFormat = pf24bit; bmpBuf->Width=783; bmpBuf->Height=390; bmpBuf->Canvas->CopyMode=cmSrcCopy; bmpBuf->Canvas->CopyRect(Rect(0,0,261,390), Image1->Canvas, Rect(0,0,261,390)); bmpBuf->Canvas->CopyRect(Rect(261,0,522,390), Image2->Canvas, Rect(0,0,261,390)); bmpBuf->Canvas->CopyRect(Rect(522,0,783,390), Image3->Canvas, Rect(0,0,261,390)); if(merge_num < 9) BMPFileName = TempDir "\\00" IntToStr(merge_num) ".bmp"; else if(merge_num < 99) BMPFileName = TempDir "\\0" IntToStr(merge_num) ".bmp"; else BMPFileName = TempDir "\\" IntToStr(merge_num) ".bmp"; bmpBuf->SaveToFile(BMPFileName.c_str()); if(merge_num < 9) RAWFileName = TempDir1 "\\00" IntToStr(merge_num) ".raw"; else if(merge_num < 99) RAWFileName = TempDir1 "\\0" IntToStr(merge_num) ".raw"; else RAWFileName = TempDir1 "\\" IntToStr(merge_num) ".raw"; FILE *fp; fp = fopen(RAWFileName.c_str() , "wb"); for (int y=0 ; y < 390 ; y ) { ptr = (Byte *) bmpBuf->ScanLine[y]; for (int x=0; x < 783*3 ; x 3) { fprintf(fp, "%c", ptr[x]); } } fclose(fp); delete bmpBuf; } |
adamjr
一般會員 發表:4 回覆:5 積分:1 註冊:2004-09-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |