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

超大影像產生記憶體不足的困惑

答題得分者是:pwipwi
adward
一般會員


發表:24
回覆:19
積分:8
註冊:2004-09-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-14 02:27:46 IP:211.76.xxx.xxx 未訂閱
我有一張很大的影像 大小約為 4096x12800  我的目的很單純...  只是想把這張影像依照我的設定去切出我想要的區域... 而當我所選取的影像很大(趨近於原始大小)的時候... 就會產生 "記憶體不足" 如下... 以下是我的程式碼:
 x0 = StrToInt(Edit1->Text);  //x0,y0,x1,y1 
 x1 = StrToInt(Edit3->Text);  //為我需要的影像範圍
 y0 = StrToInt(Edit2->Text);
 y1 = StrToInt(Edit4->Text);     Graphics::TBitmap *cut_graph;
 cut_graph = new Graphics::TBitmap();
 cut_graph->Width = x1- x0;
 cut_graph->Height = y1- y0;
 cut_graph->PixelFormat = pf24bit;     for(int i=y0 ; iScanLine[i];
  Byte *p2 = (Byte *) cut_graph->ScanLine[i-y0];
  for(int j=x0 ; jPicture->Bitmap->Assign(cut_graph);     
而最令我困惑的是 如果我將影像直接用 cut_graph->Assign(Frame21->Image1->Picture->Bitmap); 去將那張很大的影像存入cut_graph 並且將它顯示在Image1確是沒有問題的 請問各位前輩...事情的癥結在哪裡呢?? 謝謝大家花時間看完....寫的有點長抱歉..... 發表人 - adward 於 2005/03/14 02:43:26 發表人 - taishyang 於 2005/03/14 09:12:08
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-17 03:35:10 IP:211.76.xxx.xxx 未訂閱
adward你好: 基本上是你向系統要求的圖像的空間太大了。 TBitmap和TImage在配置圖像記憶體上的可能會有不一樣的方法,TBitmap是配置一個Memory來存放,但TImage可以配置成存在圖像檔案上(就比較不吃記憶體)。..細節部分我也不太清楚。因此只要一個動作會讓Resource用光,就會出現錯誤的訊息。 要解決的話,可以試著少用TBitmap來暫存圖檔,不然就只好自已讀檔來操作吧~
adward
一般會員


發表:24
回覆:19
積分:8
註冊:2004-09-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-18 16:57:34 IP:61.31.xxx.xxx 未訂閱
謝謝你的回應 我會再試試的...
系統時間:2024-05-17 11:51:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!