在操作位图期间抛出Argument Exception

时间:2016-10-08 10:05:06

标签: c# bitmap

我一直在尝试创建一个灰度位图,它的像素由我自己的颜色数组填充。这个二维数组来自获取和操作彩色图像的每个像素的过程。换句话说,我正在尝试准备一种将彩色转换为灰度的方法。

这是我如何得到像素值并计算平均值

for (var i = 0; i < SharedImg.ImgBitmap.Width;i++)
            {
                for (var j = 0; j < SharedImg.ImgBitmap.Height; j++)
                {
                    var pix= SharedImg.ImgBitmap.GetPixel(i, j);
                    var red = (int) pix.R;
                    var green = (int) pix.G;
                    var blue = (int) pix.B;
                    var avrg = (red + green + blue)/3;
                    var rgb = Color.FromArgb(avrg, avrg, avrg);
                    arrColors[i, j] = rgb;
                }
            }

现在它用数组

填充新的位图
 var imgBitmap=new Bitmap(width,height,PixelFormat.Format16bppGrayScale);
            for(var i=0 ; i<width;i++)
                for (var j = 0; j < height; j++)
                {
                    try
                    {
                        imgBitmap.SetPixel(i, j, arrColors[i, j]);
                    }
                    catch (Exception exception)
                    {
                        mainForm.UpdateNewLine(new SystemResponse(){Color = Color.Red,State = exception.ToString()});
                    }
                }

当它到达SetPixel方法时,它会抛出ArgumentException。 任何想法或提示?

0 个答案:

没有答案