[問題] 請問圖片模糊化
之前有找到演算法
說讓每個像素等於他上下左右像素的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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):