// 定义灰度调色板
System.Drawing.Imaging.ColorPalette GreyColorPalette = null;
// 定义新Bitmap图像
System.Drawing.Bitmap newBitmap = null;
// 读取BitMap图像
System.Drawing.Bitmap curBitmap = new Bitmap("00.bmp");
// 定义处理区域
Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height);
// 获取像素数据
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, curBitmap.PixelFormat);
// 获取像素数据指针
IntPtr IntPtrPixelData = bmpData.Scan0;
// 定义Buffer
byte[] PixelDataBuffer = new byte[curBitmap.Width * curBitmap.Height];
// 拷贝Bitmap的像素数据的到Buffer
System.Runtime.InteropServices.Marshal.Copy(IntPtrPixelData, PixelDataBuffer, 0, PixelDataBuffer.Length);
unsafe
{
fixed (byte* pSrc = PixelDataBuffer)
{
newBitmap = new Bitmap(curBitmap.Width, curBitmap.Height, curBitmap.Width, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, new IntPtr(pSrc));
GreyColorPalette = newBitmap.Palette;
for (int Index = 0; Index <= byte.MaxValue; Index++)
{
GreyColorPalette.Entries[Index] = Color.FromArgb(byte.MaxValue, Index, Index, Index);
}
newBitmap.Palette = GreyColorPalette;
newBitmap.Save("newBitmap.bmp");
pictureBox1.Image = newBitmap;
【CSharp】 PictureBox 显示单通道灰度图
于 2017-10-22 13:43:29 首次发布