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

讀取BMP圖

尚未結案
hilliverson
一般會員


發表:1
回覆:1
積分:0
註冊:2004-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-27 01:42:56 IP:163.25.xxx.xxx 未訂閱
各位大大 : 我們老師要我們不要用BCB中的Image去讀取BMP圖,要我們抓取BMP檔中的資料,然後顯示出來。 我已經找到了BMP的表頭檔的資訊,想問各位大大有什麼辦法可以直接將圖形中的表頭檔抓出,而且將BMP圖利用TMemoryStream顯示出來。 另外小弟還有一個小問題,就是 virtual int __fastcall Write(const void *Buffer, int Count); 中的Buffer是要傳入什麼啊?
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-27 02:28:00 IP:221.169.xxx.xxx 未訂閱
引言: 各位大大 : 我們老師要我們不要用BCB中的Image去讀取BMP圖,要我們抓取BMP檔中的資料,然後顯示出來。 我已經找到了BMP的表頭檔的資訊,想問各位大大有什麼辦法可以直接將圖形中的表頭檔抓出,而且將BMP圖利用TMemoryStream顯示出來。 另外小弟還有一個小問題,就是 virtual int __fastcall Write(const void *Buffer, int Count); 中的Buffer是要傳入什麼啊?
hilliverson: http://delphi.ktop.com.tw/topic.php?topic_id=46059 【問題】表單若有覆蓋,如何讓圖不被上面表單抹掉 答題得分者為:richtop 但請關注RaynorPao 包子版大的話。 請參考! Andy Chang
------
Andy Chang
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-27 02:30:21 IP:219.68.xxx.xxx 未訂閱
hilliverson您好..請參考以下文章 請問有沒有關於 > 抱歉...請問一下:還是 >
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-27 02:47:08 IP:219.68.xxx.xxx 未訂閱
在提供依下詳細的BMP格式 http://delphi.ktop.com.tw/topic.php?topic_Id=19839
hilliverson
一般會員


發表:1
回覆:1
積分:0
註冊:2004-06-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-27 12:45:13 IP:163.25.xxx.xxx 未訂閱
感謝各位的幫助,只是可能小弟我的表達能力不夠好。我的問題是,我不能借用BCB中的TBitmap的幫助,我必須自己宣告出BITMAPFILEHEADER,BITMAPINFOHEADER,然後將我的表現出來的圖的資訊填入其中,之後再借助TMemoryStream將圖show出來。 我現在的方法是我一個一個Byte的去讀,可是到了後段就會很麻煩,因此,我想說WinAPI裡面是不是有提供function讓我使用呢?
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-27 23:04:02 IP:219.68.xxx.xxx 未訂閱
引言: 感謝各位的幫助,只是可能小弟我的表達能力不夠好。
hilliverson您好..我想您可能沒有很仔細看我給您的連結... 您好像是看到 > <>< face="Verdana, Arial, Helvetica">引言: 我的問題是,我不能借用BCB中的TBitmap的幫助,我必須自己宣告出BITMAPFILEHEADER, BITMAPINFOHEADER, 關於BMP的HEADER....結構該怎麼寫... http://delphi.ktop.com.tw/topic.php?topic_Id=19839 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_62uq.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_1rw2.asp
引言: 然後將我的表現出來的圖的資訊填入其中,之後再借助TMemoryStream將圖show出來。
您的表達好像真的不太清楚..我很費神的去解讀才知道您想做什麼 T_T 我"猜想"應該是以下步驟.. 1..用TMemoryStream把BMP檔整個讀進來 2..解析其中的BITMAPFILEHEADER,BITMAPINFOHEADER 3..根據您所得的BITMAPFILEHEADER,BITMAPINFOHEADER..要對那張圖做某些處理 4..處理完的結果要直接寫入TMemoryStream中 5..TMemoryStream裡的圖SHOW出來.. (5這部分我不太確定您到底想怎麼做..要用IMAGE還是CANVAS..還是一個顏色一個顏色填到IMAGE?) 所以我先針對前4點解說
1...
   TMemoryStream* MemoryStream=new TMemoryStream();
   MemoryStream->LoadFromFile('XXX.BMP');    2..結構怎麼寫...上面已經有了..要填到結構裡..也很簡單..
   MemoryStream->Position=0;
   MemoryStream->Read(BITMAPFILEHEADER,Sizeof(BITMAPFILEHEADER));
   MemoryStream->Position=Sizeof(BITMAPFILEHEADER) 1;
   MemoryStream->Read(BITMAPINFOHEADER,Sizeof(BITMAPINFOHEADER));    3..您把結構BITMAPFILEHEADER,BITMAPINFOHEADER宣告好了之後..應該很已很輕易的取得裡面的欄位值
   例如         BitmapInfo.bmiHeader;  //取得圖檔總容量
   要做處理..也很簡單..您只要寫一個二維陣列..把MemoryStream先做
   MemoryStream->Position=sizeof(BITMAPFILEHEADER)   sizeof(BITMAPINFOHEADER);
   之後再從這一點開始READ直到Stream尾到陣列中..MemoryStream->Read(您的矩陣,Sizeof(您的矩陣));    4..寫入到MemoryStream中..
這我PO過了..參考..http://delphi.ktop.com.tw/topic.php?topic_Id=46939..裡面..
stream->WriteBuffer( &BitmapFileHead, sizeof(BitmapFileHead) );
stream->WriteBuffer( &BitmapInfo, sizeof(BitmapInfo) );
您想用WRITE也可以..用法都相同的..
以上我說的很明白了..畢竟這是您的作業..還是要靠自己完成的.. 既然是作業..學校就喜歡搞些小把戲(不能用XXX)..剩下的要靠您自己解決了喔 發表人 -
系統時間:2024-07-01 5:56:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!