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

[問題]讀bmp到一個陣列

尚未結案
jxxyyzz
一般會員


發表:1
回覆:0
積分:0
註冊:2005-10-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-17 09:29:59 IP:61.228.xxx.xxx 未訂閱
大大好 我想要讀bmp到一個陣列 這是搜尋文章之前的範例加以修改 會satck overflow 請問哪裡錯了 還有我想把24bits 直接抓進陣列 不要分成RGB 要怎麼修改  感謝 void __fastcall TForm1::Button1Click(TObject *Sender) {            if(OpenDialog1->Execute()){         Image1->Picture->LoadFromFile(OpenDialog1->FileName);               Graphics::TBitmap *Bmp = new Graphics::TBitmap();            Bmp->Assign(Image1->Picture->Bitmap);  //Image1圖傳給Bmp            Bmp->PixelFormat=pf24bit;            Byte *ptr;            int R[512][512],G[512][512],B[512][512]; //假設Image1大小為100*100                                            //宣告儲存R,G,B三值的陣列   for (int i=0;i<512;i ) { ptr=(Byte *)Bmp->ScanLine[i]; //用ScanLine由左而右向每一像素點分別取出RGB三值) 再由上而下掃 for(int j=0;j<512;j ) //B=ptr[3*j];G=ptr[3*j 1];R=ptr[j*3 2]; { B[i][j]=ptr[3*j]; G[i][j]=ptr[3*j 1]; R[i][j]=ptr[3*j 2]; } } } }
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-18 02:18:31 IP:61.230.xxx.xxx 未訂閱
jxxyyzz 您好:    不知道為何會發生您描述的問題,但是針對您貼上來的程式碼給您一些建議:    您宣告的陣列用不到 int,將它改為 Byte 吧,另外也要記得在迴圈執行完之後將 Bmp delete 掉。    如果圖檔大小與陣列大小並非相同,那麼陣列可試著改成用動態的方式配置,同時迴圈的比對值也最好是改成 Bmp 的 Height 與 Width。      7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-04-20 16:33:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!