要如何從掃描器掃出的資料存成BMP |
尚未結案
|
KuoWeichung
一般會員 ![]() ![]() 發表:2 回覆:4 積分:1 註冊:2005-05-20 發送簡訊給我 |
|
wyndog
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
|
KuoWeichung
一般會員 ![]() ![]() 發表:2 回覆:4 積分:1 註冊:2005-05-20 發送簡訊給我 |
|
wyndog
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
我查了一下 TBitmap 似乎沒有提供修改 DPI 的 Method
不過,也沒關係,反正,我們還是可以去動 BMP 檔 這裡可以查到 BMP 的檔案格式
http://astronomy.swin.edu.au/~pbourke/dataformats/bmp/
解析度是底下這行,要注意的是要換算成 DPI
int xresolution,yresolution; /* Pixels per meter */ 如果懶得看的話,幫你寫好了,照抄就行了
procedure SetBMPDPI(FileName: string; DPI: integer); var iDPM: integer; eDPM: Extended; FileHandle: integer; begin FileHandle := FileOpen(FileName, fmOpenWrite); eDPM := DPI * (100 / 2.54); // 因為 BMP 裡紀錄的是每公尺幾點,要換算 iDPM := Trunc(eDPM) 1; // 無條件進 1 FileSeek(FileHandle, $26, 0); FileWrite(FileHandle, iDPM, SizeOf(iDPM)); FileWrite(FileHandle, iDPM, SizeOf(iDPM)); FileClose(FileHandle); end; procedure TForm1.Button1Click(Sender: TObject); begin SetBMPDPI('C:\test.bmp', 300); end; |
KuoWeichung
一般會員 ![]() ![]() 發表:2 回覆:4 積分:1 註冊:2005-05-20 發送簡訊給我 |
|
wyndog
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
|
KuoWeichung
一般會員 ![]() ![]() 發表:2 回覆:4 積分:1 註冊:2005-05-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |