[問題] 請問圖片模糊化

看板C_Sharp作者 (飄落的櫻花)時間17年前 (2007/08/22 20:07), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
之前有找到演算法 說讓每個像素等於他上下左右像素的RGB的平均值 for (int x=1;x<width-1;x++) { for (int y=1;y<height-1;y++) { this[x,y] = Color.FromA ( this[x+1,y].R + this[x-1,y].R + this[x,y+1].R + this[x,y-1].R + this[x,y].R)/5, ( this[x+1,y].G + this[x-1,y].G + this[x,y+1].G + this[x,y-1].G + this[x,y].G)/5, ( this[x+1,y].B + this[x-1,y].B + this[x,y+1].B + this[x,y-1].B + this[x,y].B)/5); } } 但是這種做法太耗時間了 1024*768的圖片就不知道要花多久 後來小弟有找到比較快的方法 就是用指標的方式去巡 BitmapData bmData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); int stride = bmData.Stride; System.IntPtr Scan0 = bmData.Scan0; unsafe { byte* p = (byte*)(void*)Scan0; int nOffset = stride - bitmap.Width * 3; int nWidth = bitmap.Width * 3; byte b = p[0]; for (int y = 1; y < bitmap.Height; ++y) { for (int x = 0; x < nWidth; ++x) { p[0]=b; ++p; } p += nOffset; } } bitmap.UnlockBits(bmData); 但是這種方法沒辦法指定他上下左右像素的RGB值 請問用第2種方法要怎麼做到圖片模糊化的效果 小弟搜google都只有反色差 灰階 跟打光的處理而已...~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.244.46
文章代碼(AID): #16p2STtq (C_Sharp)
文章代碼(AID): #16p2STtq (C_Sharp)