//throw new System.NotImplementedException(); string strLoad = @"C:\VectorQuantization\TrainingImages\RGB\1.bmp"; string strR = @"C:\Red.bmp"; string strG = @"C:\Green.bmp"; string strB = @"C:\Blue.bmp"; // Create a new bitmap. Bitmap bmp = new Bitmap(strLoad); Bitmap bmpR = new Bitmap(bmp); Bitmap bmpG = new Bitmap(bmp); Bitmap bmpB = new Bitmap(bmp); // Lock the bitmap's bits. Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height); //24bppRGB System.Drawing.Imaging.BitmapData bmpData = bmpR.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); //32bppArgb //System.Drawing.Imaging.BitmapData bmpData = // bmpR.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, // PixelFormat.Format32bppArgb); // Get the address of the first line. IntPtr ptr = bmpData.Scan0; // Declare an array to hold the bytes of the bitmap. int bytes = bmpData.Stride * bmp.Height; byte[] rgbValues = new byte[bytes]; // Copy the RGB values into the array. System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes); if (bmpData.PixelFormat == PixelFormat.Format24bppRgb) { // Keep every third value. A 24bpp bitmap will look only red. for (int counter = 0; counter < rgbValues.Length; counter += 3) { //rgbValues[counter] = 255;//Blue //rgbValues[counter + 1] = 255;//Green //rgbValues[counter + 2] = 255;//Red } } if (bmpData.PixelFormat == PixelFormat.Format32bppArgb) { // Keep every third value. A 24bpp bitmap will look only red. for (int counter = 0; counter < rgbValues.Length; counter += 4) { //rgbValues[counter] = 255;//Blue //rgbValues[counter + 1] = 255;//Green //rgbValues[counter + 2] = 255;//Red rgbValues[counter + 3] = 255;//A } } // Copy the RGB values back to the bitmap System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes); // Unlock the bits. bmpR.UnlockBits(bmpData); // Save the R Image bmpR.Save(strR); |