請問如何在delphi中讀取bmp檔案中的每個點RGB值及存放在txt中? |
尚未結案
|
jl
一般會員 發表:17 回覆:34 積分:10 註冊:2004-02-28 發送簡訊給我 |
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
jl, 你好 類似的問題在站內有很多討論,可以先搜尋相關的文章。
1.如何載入bmp圖檔?
先在 Form 上放置一個 Image -- Image1.Picture.LoadFromFile('d:\test.bmp'); 2.如何讀取bmp檔案中的每點rgb值? (其實方法很多)
var c:TColor; r,g,b:BYTE; c:= Image1.Picture.Bitmap.Canvas.Pixels[i,j]; r:=GetRValue(c); g:=GetGValue(c); b:=GetBValue(c);3.如何將得出的rgb值存放在txt檔案中? 開一個檔案,利用相關功能去做檔案的寫入動作即可,Help 中有相當多的說明。 我也在努力學習中 ^ ^ 發表人 - adonis 於 2004/02/28 09:14:50 發表人 - adonis 於 2004/02/28 09:16:12
------
我也在努力學習中,若有錯謬請見諒。 |
jl
一般會員 發表:17 回覆:34 積分:10 註冊:2004-02-28 發送簡訊給我 |
引言: jl, 你好 類似的問題在站內有很多討論,可以先搜尋相關的文章。 1.如何載入bmp圖檔? 先在 Form 上放置一個 Image -- Image1.Picture.LoadFromFile('d:\test.bmp'); 2.如何讀取bmp檔案中的每點rgb值? (其實方法很多)To: Adonis 非常感謝你的幫助。 From:jl 平常心活著var c:TColor; r,g,b:BYTE; c:= Image1.Picture.Bitmap.Canvas.Pixels[i,j]; r:=GetRValue(c); g:=GetGValue(c); b:=GetBValue(c);3.如何將得出的rgb值存放在txt檔案中? 開一個檔案,利用相關功能去做檔案的寫入動作即可,Help 中有相當多的說明。 我也在努力學習中 ^ ^ 發表人 - adonis 於 2004/02/28 09:14:50 發表人 - adonis 於 2004/02/28 09:16:12
------
平常心活著 |
jl
一般會員 發表:17 回覆:34 積分:10 註冊:2004-02-28 發送簡訊給我 |
引言: jl, 你好 類似的問題在站內有很多討論,可以先搜尋相關的文章。 1.如何載入bmp圖檔? 先在 Form 上放置一個 Image -- Image1.Picture.LoadFromFile('d:\test.bmp'); 2.如何讀取bmp檔案中的每點rgb值? (其實方法很多)To: Adonis 非常感謝你的幫助。 From:jl 平常心活著var c:TColor; r,g,b:BYTE; c:= Image1.Picture.Bitmap.Canvas.Pixels[i,j]; r:=GetRValue(c); g:=GetGValue(c); b:=GetBValue(c);3.如何將得出的rgb值存放在txt檔案中? 開一個檔案,利用相關功能去做檔案的寫入動作即可,Help 中有相當多的說明。 我也在努力學習中 ^ ^ 發表人 - adonis 於 2004/02/28 09:14:50 發表人 - adonis 於 2004/02/28 09:16:12
------
平常心活著 |
jl
一般會員 發表:17 回覆:34 積分:10 註冊:2004-02-28 發送簡訊給我 |
引言: jl, 你好 類似的問題在站內有很多討論,可以先搜尋相關的文章。 1.如何載入bmp圖檔? 先在 Form 上放置一個 Image -- Image1.Picture.LoadFromFile('d:\test.bmp'); 2.如何讀取bmp檔案中的每點rgb值? (其實方法很多)To: Adonis 非常感謝你的幫助。 From:jl 平常心活著var c:TColor; r,g,b:BYTE; c:= Image1.Picture.Bitmap.Canvas.Pixels[i,j]; r:=GetRValue(c); g:=GetGValue(c); b:=GetBValue(c);3.如何將得出的rgb值存放在txt檔案中? 開一個檔案,利用相關功能去做檔案的寫入動作即可,Help 中有相當多的說明。 我也在努力學習中 ^ ^ 發表人 - adonis 於 2004/02/28 09:14:50 發表人 - adonis 於 2004/02/28 09:16:12
------
平常心活著 |
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
jl
一般會員 發表:17 回覆:34 積分:10 註冊:2004-02-28 發送簡訊給我 |
引言: 讀進圖片的方法有解答了,就不再重述。 至於讀圖坐標點的顏色方法,用CANVAS.PIXELS可不太好,因為真的速度很糟,要用就用SCANLINE,那速度真的會快上數十倍~因為SCANLINE是直接記憶体讀取,所以速度就真的會有所差異,不過要用SCANLINE,就得要有點記憶体指標使用經驗,不然會手忙腳亂的啦 至於TXT檔的大小限制,受限於作業系統及程式,一般來講可以到4GB,不過~~我想不出為什麼會用TXT檔來存圖~~~~~是想做文字圖嗎? >>< face="Verdana, Arial, Helvetica"> To:japhenchen 謝謝你的解答,另外,如果用scanline的話,有甚麼例子可以參考呢? 還有,scanline是否在圖片中逐點讀取呢? From:jl 平常心活著
------
平常心活著 |
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
jl,你好 若是你對指標的使用熟悉的話,下面這段 Code 供你參考。
Byte *ptr; int r,g,b; int gray; int i,j; Bmp->Assign(Image1->Picture->Bitmap); for(j=0;j分別讀出來的 r, g, b 就可以依你先前的希望存到txt檔中囉。 我也在努力學習中 ^^
------
我也在努力學習中,若有錯謬請見諒。 |
jl
一般會員 發表:17 回覆:34 積分:10 註冊:2004-02-28 發送簡訊給我 |
引言: jl,你好 若是你對指標的使用熟悉的話,下面這段 Code 供你參考。平常心活著Byte *ptr; int r,g,b; int gray; int i,j; Bmp->Assign(Image1->Picture->Bitmap); for(j=0;j分別讀出來的 r, g, b 就可以依你先前的希望存到txt檔中囉。 我也在努力學習中 ^^ To:adonis 您妳,先感謝您的回覆,但我未用過指標,一般我只會用數組,所以對此我感到有點困難;另外,看coding好像似c語言,在delphi能用這樣的寫法嗎?(因為我是初學者,所以才有此疑問)。 謝謝回覆 From : jl
------
平常心活著 |
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
jl, 你好 用delphi當然也可以辦得到。
var X, Y: Integer; r, g, b: Byte; PRGB: pRGBTriple; begin for Y := 0 to (Bitmap.Height - 1) do begin PRGB := Bitmap.ScanLine[Y]; for X := 0 to (Bitmap.Width - 1) do begin r := PRGB^.rgbtRed; g := PRGB^.rgbtGreen; b := PRGB^.rgbtBlue; Inc(PRGB); . . . //可以寫入到你所要的文字檔 end; end; end;參考看看。 我也在努力學習中 ^ ^
------
我也在努力學習中,若有錯謬請見諒。 |
favinc
一般會員 發表:22 回覆:19 積分:8 註冊:2003-03-11 發送簡訊給我 |
|
jl
一般會員 發表:17 回覆:34 積分:10 註冊:2004-02-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |