全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2083
推到 Plurk!
推到 Facebook!

如何取得BMP格式的Image的解析度

答題得分者是:timhuang
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-25 09:51:05 IP:61.222.xxx.xxx 未訂閱
我有一個系統,已經完成了把圖檔(BMP或JPEG格式)存入資料庫內,也已完成了把圖從資料庫取出的動作.但目前遭遇一個問題,找了好久一直沒找到解.就是取出的圖,無法得知解析度為多少?我有試過以API GetObject來解決,但只可惜讀到的資料,有圖的width,height,但在biXPelsPerMeter與biYPelsPerMeter就是永遠為0,不知有沒有那位大大有做過同樣的事情,或知道如何取得TImage裡目前的圖的解析度是多少DPI?謝謝
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-25 14:41:46 IP:203.95.xxx.xxx 未訂閱
hi, 原則上該屬性應該是存在 bmp 檔中, 而 image 元件裡沒有直接取得 bmp 的圖檔解析度方法, 弟這裡寫個小範例做為讀取 bmp 圖檔中的解析度方法:    
  function ReadBMPINFO(filename: string):Boolean;
  var
    bfh: TBitmapFileHeader;
    bih: TBitmapInfoHeader;
    iFileHandle: Integer;
    iBytesRead: Integer;
  begin
    Result := false;
    iFileHandle := FileOpen(filename, fmOpenRead);
    FileSeek(iFileHandle,0,0);
    iBytesRead := FileRead(iFileHandle, bfh, sizeof(bfh));
    if iBytesRead<>sizeof(bfh) then
      exit;
    iBytesRead := FileRead(iFileHandle, bih, sizeof(bih));
    if iBytesRead<>sizeof(bih) then
      exit;
    FileClose(iFileHandle);
    Result := true;
    ShowMessage(Format('Width * Height is %d * %d',[bih.biWidth, bih.biHeight]));
    ShowMessage(Format('Pixel Per Meter is %d * %d',[bih.biXPelsPerMeter, bih.biYPelsPerMeter]));
    ShowMessage(Format('Pixel Per Meter is %f * %f',[bih.biXPelsPerMeter / 100 *2.54, bih.biYPelsPerMeter / 100 *2.54]));
  end;
另外可以參考這篇 bmp 的檔案格式: http://140.126.11.200/dalton/course/Ip/Handout/BMP.doc
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-25 15:30:49 IP:61.222.xxx.xxx 未訂閱
首先感謝您撥冗解答我的問題,但因為我的圖是存入資料庫內再讀出來的(以BLOB的方式讀出),所以讀到TImage裡的圖已經沒有BMP圖檔存在了.是否尚有其他解法,或著我只能把從資料庫讀到的圖再存到暫存目錄後再去讀取BMP圖檔的檔頭(我很不想這麼做).再次感謝您的解答.
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-26 10:37:12 IP:61.222.xxx.xxx 未訂閱
timhuang,還是謝謝您.我把您的程式改成存到stream裡,一樣可以取得bmp檔的解析度,謝謝.
系統時間:2024-05-07 18:47:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!