110,534
社区成员
发帖
与我相关
我的任务
分享
public int[,] exinpix(Bitmap newBitmap, int Width, int Height)
{
int[,] ex_inpix = new int[Width + 2, Height + 2];
for (int j = 0; j < Height; j++)
for (int i = 0; i < Width; i++)
ex_inpix[i + 1, j + 1] = (newBitmap.GetPixel(i, j)).R;
ex_inpix[0, 0] = ex_inpix[1, 1];
ex_inpix[0, Height+1] = ex_inpix[1, Height];
ex_inpix[Width+1, 0] = ex_inpix[Width, 1];
ex_inpix[Width+1, Height+1] = ex_inpix[Width, Height];
for (int j = 1; j < Height + 1; j++)
{
ex_inpix[0, j] = ex_inpix[1, j];
ex_inpix[Width + 1, j] = ex_inpix[Width, j];
}
for (int i = 1; i < Width + 1; i++)
{
ex_inpix[i, 0] = ex_inpix[i, 1];
ex_inpix[i, Height + 1] = ex_inpix[i, Height];
}
return ex_inpix;
}
private void button2_Click(object sender, EventArgs e)
{
try
{
Bitmap bm = new Bitmap(pictureBox1.Image);
int Height = this.pictureBox1.Image.Height;//获取像素值
int Width = this.pictureBox1.Image.Width;//
Bitmap newBitmap = new Bitmap(Width, Height); //声明
Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image;
// Color pixel;
int[,] h = new int[3, 3];
{
h[0, 0] = 1; h[0, 1] = 1; h[0, 2] = 1;
h[1, 0] = 1; h[1, 1] = 1; h[1, 2] = 1;
h[2, 0] = 1; h[2, 1] = 1; h[2, 2] = 1;
}
int[,] ex_inpix = exinpix(oldBitmap, Width, Height);
for (int j = 1; j < Height - 1; j++)
{
for (int i = 1; i < Width - 1; i++)
{
int r = 0, sum = 0;
for (int k = -1; k < 3; k++)
for (int l = -1; l < 3; l++)
sum = sum + h[k + 1, l + 1] * ex_inpix[i + k, j + i];
r = (int)(sum / 9);
newBitmap.SetPixel(i - 1, j - 1, Color.FromArgb(r, r, r));
}
}
this.pictureBox2.Image = newBitmap;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "");
}
}