网上几种算法中速度相对较快的
- public static Bitmap MakeGrayscale(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
- Graphics g = Graphics.FromImage(newBitmap);
- //create the grayscale ColorMatrix
- System.Drawing.Imaging.ColorMatrix colorMatrix = new System.Drawing.Imaging.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
- System.Drawing.Imaging.ImageAttributes attributes = new System.Drawing.Imaging.ImageAttributes();
- //set the color matrix attribute
- attributes.SetColorMatrix(colorMatrix);
- //draw the original image on the new image
- //using the grayscale color matrix
- g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
- //dispose the Graphics object
- g.Dispose();
- return newBitmap;
- }
复制代码
|
|