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

bmp圖檔問題

答題得分者是:taishyang
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-05 19:39:01 IP:211.20.xxx.xxx 訂閱
這程式碼是我在網路上找的,但是我真的不懂,所以希望有人可以幫我解答,拜託
[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{

Graphics::TBitmap* BMP = new Graphics::TBitmap();
BMP->LoadFromFile("C:\\1.bmp");
Image1->Picture->Assign(BMP);
TStringList* RawData=new TStringList();
Byte* ptr=NULL;
h=BMP->Height;
w=BMP->Width;

for(int y=0;yHeight;y ){ //yHeight是什麼,問什麼都沒有看到宣告
ptr=(Byte*)BMP->ScanLine[y]; //這行的意思是什麼?

for(int x=0;xWidth*3;x )
{
RawData->Add(ptr[x]);
}
}
RawData->SaveToFile("RawData.txt");

Form1->Caption=AnsiString(h) ":" AnsiString(w);

delete BMP;
delete RawData;
}
//---------------------------------------------------------------------------


[/code]
------
lee
編輯記錄
small7011 重新編輯於 2008-11-05 19:39:29, 註解 無‧
small7011 重新編輯於 2008-11-05 19:40:11, 註解 無‧
small7011 重新編輯於 2008-11-05 19:40:56, 註解 無‧
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-05 20:08:12 IP:118.169.xxx.xxx 訂閱

Q:
yHeight是什麼,問什麼都沒有看到宣告
A:這是網頁顯示的問題,原文應該是這樣
for(int y=0; y < BMP->Height; y ){


Q:這行的意思是什麼? ptr=(Byte*)BMP->ScanLine[y];
A:用BMP的scanline屬性可以得到一整行的像素資料,再轉型成Byte指標,好讓你的ptr可以存取


small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-06 16:34:44 IP:211.20.xxx.xxx 訂閱
1.請問我這樣子可以把1.bmp這張圖的RGB pixe都取出來l嗎?因為我y迴圈只跑一次就會出現系統錯誤訊息
2.我存放的RawData.txt資料算是raw資料嗎?

[code cpp]
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int h,w;
int R,G,B;
AnsiString asTemp;
Graphics::TBitmap* BMP = new Graphics::TBitmap();
BMP->LoadFromFile("1.bmp");
Image1->Picture->Assign(BMP);
TStringList* RawData=new TStringList();
Byte *ptr=NULL;
h=BMP->Height;
w=BMP->Width;
for(int y=0;yHeight;y )
{
ptr=(Byte*)BMP->ScanLine[y];
for(int x=0;xWidth*3;x )
{
B = ptr[x*3];
G = ptr[x*3 1];
R = ptr[x*3 2];
asTemp=IntToStr(R) "," IntToStr(G) "," IntToStr(B) "\n";
}
}
RawData->Text=asTemp;
RawData->SaveToFile("RawData.txt");
ShowMessage("Save Done");
Form1->Caption=AnsiString(h) ":" AnsiString(w);

delete BMP;
delete RawData;
}
[/code]
------
lee
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-06 16:44:49 IP:118.169.xxx.xxx 訂閱
Q1.請問我這樣子可以把1.bmp這張圖的RGB pixe都取出來l嗎?因為我y迴圈只跑一次就會出現系統錯誤訊息
A1.改成
for(int x=0; x < BMP->Width; x )

Q2.我存放的RawData.txt資料算是raw資料嗎?

A2.通常沒有標頭資訊的就稱為RAW DATA
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-06 18:33:49 IP:211.20.xxx.xxx 訂閱
請問我怎麼知道這圖片是否有標頭資訊呢?要如何取得或是可以查看
===================引 用 taishyang 文 章===================
Q2.我存放的RawData.txt資料算是raw資料嗎?
A2.通常沒有標頭資訊的就稱為RAW DATA
------
lee
taishyang
站務副站長


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-06 18:58:33 IP:118.169.xxx.xxx 訂閱
1.去查檔案格式(google search)
2.利用UltraEdit開啟該檔案並觀察
small7011
一般會員


發表:19
回覆:34
積分:10
註冊:2007-07-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-06 19:24:19 IP:211.20.xxx.xxx 訂閱
謝謝您~~我知道了
===================引 用 taishyang 文 章===================
1.去查檔案格式(google search)
2.利用UltraEdit開啟該檔案並觀察
------
lee
系統時間:2024-05-14 21:49:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!