像素点的像素值与相邻像素点的像素值相减后加上128, 然后将其作为新的像素点的值.
注意:
此时For循环的时候,x<oldPic.Width -1即可,y同样。
判断,若r、g、b的值<0,则设置=0,若>255,则设置=255; private void tsbtnFudiao_Click(object sender, EventArgs e)
{
Color oldNeiColor;
for (int x = 1; x < oldpic.Width-1; x++)
{
for (int y = 1; y < oldpic.Height-1; y++)
{
oldlColor = oldpic.GetPixel(x, y);
oldNeiColor = oldpic.GetPixel(x + 1, y + 1);
int r = oldlColor.R - oldNeiColor.R + 128;
int g = oldlColor.G - oldNeiColor.G + 128;
int b = oldlColor.B - oldNeiColor.B + 128;
int[] arr = { r, g, b };
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] < 0)
{
arr[i] = 0;
}
else if (arr[i] > 255)
{
arr[i] = 255;
}
}
newColor = Color.FromArgb(r, g, b);
newpic.SetPixel(x, y, newColor);
}
progressBar1.Maximum = newpic.Width;
progressBar1.Value = x;
this.Refresh();
picShow.Image = newpic;
}
int[] arr = { r, g, b };
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] < 0)
{
arr[i] = 0;
}
else if (arr[i] > 255)
{
arr[i] = 255;
}
}这里有什么问题,为什么还是有情况就是r,b,g都取到负数和大于255的数
注意:
此时For循环的时候,x<oldPic.Width -1即可,y同样。
判断,若r、g、b的值<0,则设置=0,若>255,则设置=255; private void tsbtnFudiao_Click(object sender, EventArgs e)
{
Color oldNeiColor;
for (int x = 1; x < oldpic.Width-1; x++)
{
for (int y = 1; y < oldpic.Height-1; y++)
{
oldlColor = oldpic.GetPixel(x, y);
oldNeiColor = oldpic.GetPixel(x + 1, y + 1);
int r = oldlColor.R - oldNeiColor.R + 128;
int g = oldlColor.G - oldNeiColor.G + 128;
int b = oldlColor.B - oldNeiColor.B + 128;
int[] arr = { r, g, b };
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] < 0)
{
arr[i] = 0;
}
else if (arr[i] > 255)
{
arr[i] = 255;
}
}
newColor = Color.FromArgb(r, g, b);
newpic.SetPixel(x, y, newColor);
}
progressBar1.Maximum = newpic.Width;
progressBar1.Value = x;
this.Refresh();
picShow.Image = newpic;
}
int[] arr = { r, g, b };
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] < 0)
{
arr[i] = 0;
}
else if (arr[i] > 255)
{
arr[i] = 255;
}
}这里有什么问题,为什么还是有情况就是r,b,g都取到负数和大于255的数
newColor = Color.FromArgb(r, g, b);
newpic.SetPixel(x, y, newColor); 改为:
newColor = Color.FromArgb(arr[0], arr[1], arr[2]);
newpic.SetPixel(x, y, newColor);