線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2480
推到 Plurk!
推到 Facebook!

將Raw檔轉BMP檔 卻變的不太一樣...

缺席
dads
一般會員


發表:1
回覆:4
積分:1
註冊:2008-05-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-22 00:49:49 IP:118.169.xxx.xxx 訂閱
我讀取了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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-05-22 12:52:25 IP:118.169.xxx.xxx 訂閱
不知你加這行的目的為何?
TheBitmap=img1->Picture->Bitmap;
dads
一般會員


發表:1
回覆:4
積分:1
註冊:2008-05-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-05-23 00:51:53 IP:118.169.xxx.xxx 訂閱

===================引 用 taishyang 文 章===================
不知你加這行的目的為何?
TheBitmap=img1->Picture->Bitmap;

我想要將img1這張圖指定給TheBitmap..這樣我才能顯示於img1不是???
感覺就是將img1跟TheBitmap連在一起..我要表達的是這樣
不好意思 我是超新手...@@
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-05-23 09:49:02 IP:118.169.xxx.xxx 訂閱
你不是要顯示RAW到img1上?
你要把TheBitmap assign給img1才對




===================引 用 dads 文 章===================
我想要將img1這張圖指定給TheBitmap..這樣我才能顯示於img1不是???
感覺就是將img1跟TheBitmap連在一起..我要表達的是這樣
不好意思 我是超新手...@@
dads
一般會員


發表:1
回覆:4
積分:1
註冊:2008-05-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-05-23 10:24:43 IP:219.87.xxx.xxx 訂閱

===================引 用 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-05-23 10:31:55 IP:219.87.xxx.xxx 訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-05-23 18:54:38 IP:219.87.xxx.xxx 訂閱
囧..我知道問題所在了
我將image的autosize與Stretch設為true....=.=
設成false就可以了...
感謝你們的回應 謝謝.
系統時間:2024-12-05 3:34:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!