Try this;) But this unsafe code.
void RedAndBlue() { OpenFileDialog ofd; int imageHeight, imageWidth; if (ofd.ShowDialog() == DialogResult.OK) { Image tmp = Image.FromFile(ofd.FileName); imageHeight = tmp.Height; imageWidth = tmp.Width; } else { // error } int[,] bluePixelArray = new int[imageWidth, imageHeight]; int[,] redPixelArray = new int[imageWidth, imageHeight]; Rectangle rect = new Rectangle(0, 0, tmp.Width, tmp.Height); Bitmap temp = new Bitmap(tmp); BitmapData bmpData = temp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); int remain = bmpData.Stride - bmpData.Width * 3; unsafe { byte* ptr = (byte*)bmpData.Scan0; for (int j = 0; j < bmpData.Height; j++) { for (int i = 0; i < bmpData.Width; i++) { bluePixelArray[i, j] = ptr[0]; redPixelArray[i, j] = ptr[2]; ptr += 3; } ptr += remain; } } temp.UnlockBits(bmpData); temp.Dispose(); }
source share