“我想要一个灰度的Bitmap
d。我确实看到了一个包含System.Drawing.Imaging.PixelFormat的构造器,但我不知道如何使用它。”
这是怎么做的
Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);
编辑: 转换为 灰度
Bitmap c = new Bitmap("fromFile"); Bitmap d; int x, y; // Loop through the images pixels to reset color. for (x = 0; x < c.Width; x++) { for (y = 0; y < c.Height; y++) { Color pixelColor = c.GetPixel(x, y); Color newColor = Color.FromArgb(pixelColor.R, 0, 0); c.SetPixel(x, y, newColor); // Now greyscale } } d = c; // d is grayscale version of c来自switchonthepre的 Faster版本,请点击以下链接进行全面分析:
public static Bitmap MakeGrayscale3(Bitmap original){ //create a blank bitmap the same size as original Bitmap newBitmap = new Bitmap(original.Width, original.Height); //get a graphics object from the new image using(Graphics g = Graphics.FromImage(newBitmap)){ //create the grayscale ColorMatrix ColorMatrix colorMatrix = new ColorMatrix( new float[][]{ new float[] {.3f, .3f, .3f, 0, 0}, new float[] {.59f, .59f, .59f, 0, 0}, new float[] {.11f, .11f, .11f, 0, 0}, new float[] {0, 0, 0, 1, 0}, new float[] {0, 0, 0, 0, 1} }); //create some image attributes using(ImageAttributes attributes = new ImageAttributes()){//set the color matrix attributeattributes.SetColorMatrix(colorMatrix);//draw the original image on the new image//using the grayscale color matrixg.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes); } } return newBitmap;}


