将RGB信息从图像提取到数组中

时间:2015-07-17 11:16:57

标签: c# bitmap decimal rgb

我必须保存一个位图文件,然后访问每个像素的rgb并将每种颜色的像素(即红色,绿色和蓝色)的十进制代码保存在一个单独的矩阵(数组)中。

对于在bmp lmage中隐藏文本文件我需要将每个rgb代码保存在单独的矩阵中... lm寻找有效的方法,这是我的代码

这段代码将会运行,但是我无法在lable的文本中显示每个矩阵的结果。我可以看到每个矩阵的输出吗?

 Bitmap bmp1 = new Bitmap(@"D:a.jpg");
        pictureBox1.Image = bmp1;
        Color col = new Color();
        int w = Int32.Parse(bmp1.Width.ToString());
        int h = Int32.Parse(bmp1.Height.ToString()); 
        int[,] redstr = new int[w,h];
        int[,] greenstr = new int[w, h];
        int[,] bluestr = new int[w, h];
        int red = 0, green = 0, blue = 0;
        for (int i = 0; i < w; i++)
        {
            for (int j = 0; j < h; j++)
            {
                col = bmp1.GetPixel(i, j);
                red = col.R;
                green = col.G;
                blue = col.B;
                redstr[i, j] = red;
                greenstr[i, j] = green;
                bluestr[i, j] = blue;

            }

            }

1 个答案:

答案 0 :(得分:0)

从以下页面开始...... https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx

你可以使用这样的东西来访问图像的每个像素......

private void GetPixel_Example(PaintEventArgs e)
{

// Create a Bitmap object from an image file.
Bitmap myBitmap = new Bitmap("YOURFILENAME.jpg");

// Get the color of a pixel within myBitmap.
Color pixelColor = myBitmap.GetPixel(50, 50);

}

然后你可以检查pixelColour的RGB组件。

显然,您需要创建与图像尺寸相同的2D阵列(矩阵)。如果您需要存储单独的RGB组件,那么您将需要一个3D阵列。