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

關於BMP檔案格式

尚未結案
dorisfish
一般會員


發表:5
回覆:3
積分:1
註冊:2004-12-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-03 12:52:53 IP:61.30.xxx.xxx 未訂閱
有兩個問題想請教 1.利用BITMAPFILEHEADER & BITMAPINFOHEADER抓取BMP檔案資料在BCB5.0是可行的,但是移到BCB6.0會發生抓出資料不正確的問題(已經可以正確抓到檔案資訊,自訂)但是還是想請問一下 2.BMP檔案格式中,有定義int xresolution(pixels per meter)跟int yresolution(pixels per meter),但是無論是利用"BITMAPFILEHEADER & BITMAPINFOHEADER"還是"自訂結構"去抓,出來的值都是0,這一點我非常疑惑@@?但是其他資料都是正確的(例如影像長寬...) <(_ _)>麻煩大家
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-03 13:11:26 IP:220.135.xxx.xxx 未訂閱
引言: 有兩個問題想請教 1.利用BITMAPFILEHEADER & BITMAPINFOHEADER抓取BMP檔案資料在BCB5.0是可行的,但是移到BCB6.0會發生抓出資料不正確的問題(已經可以正確抓到檔案資訊,自訂)但是還是想請問一下 2.BMP檔案格式中,有定義int xresolution(pixels per meter)跟int yresolution(pixels per meter),但是無論是利用"BITMAPFILEHEADER & BITMAPINFOHEADER"還是"自訂結構"去抓,出來的值都是0,這一點我非常疑惑@@?但是其他資料都是正確的(例如影像長寬...) <(_ _)>麻煩大家
dorisfish你好: BITMAPFILEHEADER和BITMAPINFOHEADER,我都不會用..想請問有沒有程式 可以貼出來,至少讓我們知道你是怎麼用的。這樣也比較好解決你的問題。
taishyang
站務副站長


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-03 13:32:51 IP:210.68.xxx.xxx 未訂閱
您好: 不曉得您的情況是不是像下面連結一樣 http://delphi.ktop.com.tw/topic.php?topic_id=22856 順心
dorisfish
一般會員


發表:5
回覆:3
積分:1
註冊:2004-12-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-03 20:31:32 IP:61.31.xxx.xxx 未訂閱
謝謝版大,這果然解決我第一個疑問<(_ _)> 但是有關於第二個問題,我還是有點疑惑 根據BMP檔案格式(檔頭部份) fileheader(14bytes)+infomation header(40bytes) 其中infomation header(40bytes)定義如下:          typedef struct{                          unsigned int HeaderSize;                          int Width;                          int Height;                          unsigned short int Planes;                          unsigned short int Bits;                          unsigned int Compression;                          unsigned int Imagesize;                          int Xresolution;                          int Yresolution;                          unsigned int ncolours;                          unsigned int importantcolours;         }bmpinfoheader;  所以我計算出我想要取的資訊的位置 程式撰寫如下:                    //XPelsPerMeter                 fseek(fptr_open, 38, 0);                 fread(&infoheader.Xresolution,4,1,fptr_open);                 AnsiString XPelsPerMeter =  infoheader.Xresolution;                 XPelsPerMeter = XPelsPerMeter / 100 *2.54;                 Memo1->Lines->Add("X-axis Resolution = "+XPelsPerMeter);                                  //YPelsPerMeter                 fseek(fptr_open, 42, 0);                 fread(&infoheader.Xresolution,4,1,fptr_open);                 AnsiString YPelsPerMeter =  infoheader.Yresolution;                 YPelsPerMeter = YPelsPerMeter / 100 *2.54;                 Memo1->Lines->Add("Y-axis Resolution = "+YPelsPerMeter); 但是讀取出來的資訊是"0",但是根據我的認知,應該是"pixels per meter",起碼是ㄧ個較大的數字,我之所以想要取得這一個資訊是因為想要知道此BMP檔案的解析度(dpi) 目前取其他檔頭位置(ㄧ樣是計算read出都沒有問題) 以下是目前結果圖示:     請知道的前輩,不吝指教<(_ _)>
 
 
 
發表人 - dorisfish 於 2005/02/03 20:33:28
 
 
 
 
 
 
發表人 - dorisfish 於 2005/02/03 20:34:52
系統時間:2024-05-17 12:21:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!