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

如何讀取BMP圖檔所有Byte值並顯示至Form

答題得分者是:mephise
yc601065
一般會員


發表:3
回覆:5
積分:1
註冊:2009-12-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-03-23 20:08:26 IP:220.130.xxx.xxx 訂閱
Hi各位高手好~
小弟我想讀取BMP圖檔並以Byte(如:0xFFFFFFF...)方式顯示在Form的Memo元件上
以下是我找到的相關範例Code,請問ptr要如何修改才能以Byte顯示至Memo元件
=============================================

[code delphi]
Byte *ptr;
int r,g,b;
int gray;
int i,j;
int threshold;
threshold=ScrollBar1->Position;
Edit1->Text=ScrollBar1->Position;
Bmp->Assign(Image1->Picture->Bitmap);
for(j=0;jHeight;j )
{
ptr=(Byte *)Bmp->ScanLine[j];//ptr指標指向bmp第y行
for(i=0;iWidth;i )
{
b=ptr[i*3];
g=ptr[i*3 1];
r=ptr[i*3 2];
gray=0.299*r 0.587*g 0.114*b; //灰階演算
if(gray>threshold)
gray=255;
else
gray=0;
ptr[i*3]=(Byte)gray;//藍
ptr[i*3 1]=(Byte)gray; //綠
ptr[i*3 2]=(Byte)gray; //紅
}
}
[/code]

編輯記錄
yc601065 重新編輯於 2011-03-23 09:58:15, 註解 無‧
yc601065 重新編輯於 2011-03-23 10:04:48, 註解 無‧
yc601065 重新編輯於 2011-03-23 10:06:16, 註解 無‧
yc601065 重新編輯於 2011-03-23 10:07:15, 註解 無‧
yc601065 重新編輯於 2011-03-23 10:09:00, 註解 無‧
yc601065 重新編輯於 2011-03-23 10:13:51, 註解 無‧
mephise
高階會員


發表:4
回覆:149
積分:205
註冊:2004-02-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-03-25 17:10:15 IP:60.250.xxx.xxx 訂閱
不是非常懂您的問題, 是要讀出每個Pixel的顏色值嗎?

如果是這樣的話, 因為你已經丟到 TBitmap了, 直接用
TBitmap.Canvas.Pixels[x,y] 就會讀出 TColor 值
接著再用IntToHex 之類的函數轉成字串就可以丟到 Memo 上了

喔 剛剛看錯, 你是先放到 TImage 那就更簡單啦
TImage 也有 Canvas, 所以方法跟上述相同

------
Mephise Chen
前興德工程師
yc601065
一般會員


發表:3
回覆:5
積分:1
註冊:2009-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-03-26 20:28:37 IP:124.8.xxx.xxx 訂閱
感謝mephise回應
我想要讀取一張Bmp圖檔Bitmap所有資料,
一張Bmp圖架構資料的(File Header 調色盤 影像資料->應該就是你說的Pixel),並以Hexstring方式顯示至元件Memo
mephise
高階會員


發表:4
回覆:149
積分:205
註冊:2004-02-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-03-27 08:57:51 IP:59.115.xxx.xxx 訂閱
那就跟它是不是 BMP 檔無關了, 你只是要單純開一個 Binary 檔, 然後讀數值而已

你可以利用這樣的宣告, 讀取檔案 (我是用 Untyped Binary File 方式來讀取)

var
F: File;

然後再利用
AssignFile, Reset, BlockRead, CloseFile 這幾個函數來讀取檔案
細節我就不說了, 請查閱 Delphi 中的 Help, Help裡面也有一些範例可供參考
把資料讀到 Byte 裡面再轉成 Hex 顯示在 Memo 中即可
------
Mephise Chen
前興德工程師
系統時間:2024-05-06 4:50:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!