您的位置:首页 > 编程语言 > C#

C# 操作 彩色图像

2008-03-17 18:08 176 查看
C# 操作 彩色图像
2007-11-14 08:42
//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);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: