將Raw檔轉BMP檔 卻變的不太一樣... |
缺席
|
dads
一般會員 發表:1 回覆:4 積分:1 註冊:2008-05-22 發送簡訊給我 |
我讀取了raw檔後,將raw的內容用1byte的unsigned char去存他....ex: arr[z]={23 ,31 ,35 .....},然後轉BMP檔...
以下是我的程式碼片段... 能告知我為什麼嗎 ? 我想了一整天了.. Graphics::TBitmap *TheBitmap; TheBitmap=new Graphics::TBitmap(); img1->Picture->Bitmap->Height=h; //h=480 img1->Picture->Bitmap->Width=w; //w=640 TheBitmap->PixelFormat=pf24bit; TheBitmap=img1->Picture->Bitmap; int z=0; for(int i=0;i for(int j=0;j TheBitmap->Canvas->Pixels[i][j]=(TColor)RGB(arr[z],arr[z],arr[z]); //指定每一個pixel的顏色.... z ; } } 結果 我讀出來的圖跟用photoshop開 ...差蠻多的....Orz |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
dads
一般會員 發表:1 回覆:4 積分:1 註冊:2008-05-22 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
dads
一般會員 發表:1 回覆:4 積分:1 註冊:2008-05-22 發送簡訊給我 |
===================引 用 taishyang 文 章=================== 你不是要顯示RAW到img1上? 你要把TheBitmap assign給img1才對 img1-->我要顯示的圖的目的地 TheBitmap為我要處理的圖buffer TheBitmap=img1->Picture->Bitmap; 我把她們連一起 才可以將我處裡的圖顯示在上面不是? 其實我最後處理完後,有 img1->Picture->Assign(TheBitmap); 因為我顯示出的圖跟原圖不太一樣..所以我才po我的處理過程... 我附上我的程式碼好了...@@ |
dads
一般會員 發表:1 回覆:4 積分:1 註冊:2008-05-22 發送簡訊給我 |
void __fastcall TForm1::LoadPic_BClick(TObject *Sender)
{ FILE *file; char *fname; long z=0; unsigned char *arr,*ptr; //8bit int w=0,h=0; //開檔 if((OpenDialog1->Execute())) { fname=OpenDialog1->FileName.c_str(); file=fopen(fname, "rb"); //若讀檔錯誤則傳回訊息 if(file==NULL||(Height->Text=="")||(Width->Text=="")) { ShowMessage(" Error!!"); return; } } // size=(filelength(fileno(file))); h=Height->Text.ToInt(); //480 w=Width->Text.ToInt(); //640 arr = new unsigned char[h*w]; fread(arr,h*w*sizeof(unsigned char),1,file); //unsigned char=8 bit 0~255 //關閉檔案 } else { ShowMessage("請選擇圖的位元數..."); return; } fclose(file); //--------------------------------------------------------------- Graphics::TBitmap *TheBitmap; TheBitmap=new Graphics::TBitmap(); img1->Picture->Bitmap->Height=h; //h=480 img1->Picture->Bitmap->Width=w; //w=640 TheBitmap->PixelFormat=pf24bit; TheBitmap=img1->Picture->Bitmap; for(int i=0;i for(int j=0;j TheBitmap->Canvas->Pixels[i][j]=(TColor)RGB(arr[z],arr[z],arr[z]); z ; } } img1->Picture->Assign(TheBitmap); img1->Picture->SaveToFile("0521.bmp"); Repaint(); } |
dads
一般會員 發表:1 回覆:4 積分:1 註冊:2008-05-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |