"मैं चाहता हूँ एक बिटमैप घ, कि ग्रेस्केल है। मैं एक consructor कि System.Drawing.Imaging.PixelFormat, शामिल क्यों दिखाई देता है, लेकिन मुझे समझ नहीं आता कि का उपयोग कैसे करें।"
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
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
ImageAttributes attributes = new 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;
}
: पूर्ण विश्लेषण के लिए
switchonthecode कड़ी का अनुसरण से
ग्रेस्केल में बदलने के लिए
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
तेज़ संस्करण:
मुझे खेद है, मुझे यह कहना चाहिए था कि मेरे प्रश्न में कि मैं अपने मूल बिटमैप के ग्रेस्केल संस्करण को चाहता हूं, मैंने इसे प्रतिबिंबित करने के लिए पोस्ट संपादित किया है। – 0fnt
यह विधि (पिक्सेल द्वारा पिक्सेल बहुत धीमी है) इस आलेख को यहां देखें: http: //www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale – Luis
इसके अलावा, पिक्सेल-बाय -पिक्सेल विधि केवल लाल मान का उपयोग कर रहा था .... – mpen