2017-10-12 94 views
0

我需要黑色图像转换为灰度image.my代码转换彩色图像为灰度image.but不会转换黑色图像 为灰度image.Even尝试从计算器一个样品 灰度转换。这也不适用于黑色到灰度的 图像转换。该链接是https://stackoverflow.com/a/2265990/8569792黑色图像转换为灰度图像

public void GreyScaleConversion() 
{   
    //read image 
    Bitmap bmp = global::Ribbon.Properties.Resources.Device; 

    //load original image in picturebox1 
    pictureBox1.Image = global::Ribbon.Properties.Resources.Device; 

    //get image dimension 
    int width = bmp.Width; 
    int height = bmp.Height; 

    //color of pixel 
    Color p; 

    //grayscale 
    for (int y = 0; y < height; y++) 
    { 
     for (int x = 0; x < width; x++) 
     { 
      //get pixel value 
      p = bmp.GetPixel(x, y); 

      //extract pixel component ARGB 
      int a = p.A; 
      int r = p.R; 
      int g = p.G; 
      int b = p.B; 

      //find average 
      int avg = (r + g + b)/3; 

      //set new pixel value 
      bmp.SetPixel(x, y, Color.FromArgb(a, avg, avg, avg)); 
     } 
    } 

    //load grayscale image in picturebox2 
    pictureBox2.Image = bmp; 
} 

回答

0
public void GreyScaleConversion() 
    { 
     //read image 
     Bitmap bmp = global::Ribbon.Properties.Resources.Device; 

     //load original image in picturebox1 
     pictureBox1.Image = global::Ribbon.Properties.Resources.Device; 

     //get image dimension 
     int width = bmp.Width; 
     int height = bmp.Height; 

     //color of pixel 
     Color p; 

     //grayscale 
     for (int y = 0; y < height; y++) 
     { 
      for (int x = 0; x < width; x++) 
      { 
       //get pixel value 
       p = bmp.GetPixel(x, y); 

       //extract pixel component A 
       int a = p.A; 

       //set new pixel value 
       bmp.SetPixel(x, y, Color.FromArgb(a, 155, 155, 155)); 
      } 
     } 

     //load grayscale image in picturebox2 
     pictureBox2.Image = bmp; 
    }