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

如何處理24bits圖片

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


發表:12
回覆:5
積分:3
註冊:2008-11-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-10 10:16:44 IP:163.25.xxx.xxx 訂閱
下面這段程式是要把pixel值為255的點變成紅色的點
可是它只能處理8bits的圖檔,不能處理24bits
請問我要怎麼修改呢???
註:我不想使用TheBitmap->PixelFormat=pf8bit這種方法,因為圖片會失真


[code cpp]
{
Graphics::TBitmap *TheBitmap;
Byte *ptr;

TheBitmap=Image2->Picture->Bitmap;
for(int y=0; y < TheBitmap->Height; y )
{
ptr=(Byte*)TheBitmap->ScanLine[y];
for(int x=0; x < TheBitmap->Width; x )
{
if(ptr[x]==255)
Image2->Canvas->Pixels[x][y]=clRed;
}
}

Repaint();
OrgBitmap2->Assign(TheBitmap);
}
[/code]
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-10 10:27:30 IP:118.169.xxx.xxx 訂閱
你是要白點變紅點嗎?

Graphics::TBitmap *TheBitmap;

Byte *ptr = NULL;
TheBitmap=Image2->Picture->Bitmap;
for(int y=0; y < TheBitmap->Height; y ){
ptr=(Byte*)TheBitmap->ScanLine[y];
for(int x=0; x < TheBitmap->Width; x ){
if(ptr[x*3]==255 &&
ptr[x*3 1]==255 && ptr[x*3 2] == 255){
ptr[x*3] = 0; //B
ptr[x*3 1] = 0; //G
ptr[x*3 2] = 255; //R
}
}
}

Repaint();
OrgBitmap2->Assign(TheBitmap);
iam4000
一般會員


發表:12
回覆:5
積分:3
註冊:2008-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-10 15:00:25 IP:163.25.xxx.xxx 訂閱
謝謝副站長

這就是我要的答案

我也有用過類似的方式寫過

不過總是有小地方寫錯導致結果都不正確

真是太感謝了
系統時間:2024-04-20 0:18:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!