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

馬賽克問題

 
nike880724
一般會員


發表:11
回覆:4
積分:3
註冊:2006-08-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-06 09:43:31 IP:220.140.xxx.xxx 未訂閱

請問各位大大~~

要把256*256ㄉ灰階突變成2*2;4*4;8*8;16*16;32*32;64*64;128*128ㄉ馬賽克圖~~

再Image1開啟原圖~~處理過後ㄉ圖印在Image2~~

請各位大大教教我ㄧ下吧~~謝謝^^

下面這是網路上ㄉ程式碼~~可是我看不太懂是什ㄇ意思~~

而且跑出來Image1跟Image2都會變馬賽克ㄟ~~那ㄟ安ㄋㄟ~~ = ="

int width,height,i,j,ir,jr,aver,aveg,aveb;
Graphics::TBitmap *TheBitmap;
TheBitmap = Image1->Picture->Bitmap;
height=TheBitmap->Height;
width=TheBitmap->Width;
Image1->Canvas->Pen->Style=psClear;

for (i=0;ifor (j=0;j

aver=0;
aveg=0;
aveb=0;
for (ir=i;ir {
for (jr=j;jr {
aver =GetRValue(TheBitmap->Canvas->Pixels[ir][jr]);
aveg =GetGValue(TheBitmap->Canvas->Pixels[ir][jr]);
aveb =GetBValue(TheBitmap->Canvas->Pixels[ir][jr]);
}
}
Image1->Canvas->Brush->Color=RGB(aver/16,aveg/16,aveb/16);
Image1->Canvas->Rectangle(i,j,i 5,j 5);
}
}

Image2->Picture->Assign(TheBitmap);

nat626
一般會員


發表:2
回覆:5
積分:1
註冊:2006-09-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-19 03:14:12 IP:61.225.xxx.xxx 未訂閱

#define MASZCK_SIZE 8

void __fastcall TForm1::N19Click(TObject *Sender)
{
Graphics::TBitmap *TheBitmap, *TempBitmap;
int Width, Height;
Byte *ptr1, *ptr2;
TempBitmap = new Graphics::TBitmap();
TheBitmap = Image1->Picture->Bitmap;
TempBitmap->Assign(TheBitmap);
Width = TheBitmap->Width;
Height = TheBitmap->Height;

for(int y = 0 ; y < Height ; y =MASZCK_SIZE){
for(int x = 0 ; x < Width ; x =MASZCK_SIZE){
int aveb = 0, aveg = 0, aver = 0;
for(int i = y ; i < y MASZCK_SIZE ; i ){
ptr1 = (Byte*) TheBitmap->ScanLine[i];
for(int j = x ; j < x MASZCK_SIZE ; j ){
aveb = ptr1[j*3];
aveg = ptr1[j*3 1];
aver = ptr1[j*3 2];
}
}
for(int i = y ; i < y MASZCK_SIZE ; i ){
ptr2 = (Byte*) TempBitmap->ScanLine[i];
for(int j = x ; j < x MASZCK_SIZE ; j ){
ptr2[j*3] = aveb/(MASZCK_SIZE*MASZCK_SIZE);
ptr2[j*3 1] = aveg/(MASZCK_SIZE*MASZCK_SIZE);
ptr2[j*3 2] = aver/(MASZCK_SIZE*MASZCK_SIZE);
}
}
}
}
Image2->Picture->Assign(TempBitmap);
}

不知道這個是否有符合你的要求
我是拿一張512*512的圖下去做碼賽克
馬賽克大小可以從這行
#define MASZCK_SIZE 8
改成你想要的大小

這是自己想出來這樣寫的

所以因該有更好的方法

如果有寫不好的地方請多多指教^^

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