使用位图将图像从彩色转换为黑色&白色 - 空间问题:c#

时间:2017-05-15 12:45:31

标签: c# .net

我认为这可能会重复,但代码不是: 我使用以下代码将图像从jpg颜色转换为jpg b& w。 TH eproblem是我的颜色jpg大小为500KB,但我转换的b& w jpg是2.18MB,如何优化这种转换的大小。

public void ConvertBlackAndWhiteImage()
      {
           System.Drawing.Bitmap originalImage = null;
           originalImage = new System.Drawing.Bitmap(@"C:\Users\anvesh.veerelli\Pictures\ash 3.jpg");
           System.Drawing.Color c;

           for (int i = 0; i < originalImage.Width; i++)
           {
                for (int j = 0; j < originalImage.Height; j++)
                {
                     c = originalImage.GetPixel(i, j);
                     int r = 0;
                     r = Convert.ToInt16(c.R);
                     int g = 0;
                     g = Convert.ToInt16(c.G);
                     int b = 0;
                     b = Convert.ToInt16(c.B);
                     int ans = (r + g + b) / 3;
                     if (ans > 128)
                     {
                          r = 255;
                          g = 255;
                          b = 255;
                     }
                     else
                     {
                          r = 0;
                          g = 0;
                          b = 0;
                     }
                     c = System.Drawing.Color.FromArgb(r, g, b);
                     originalImage.SetPixel(i, j, c);

                }
           }
           string tmpFileName = @"C:\Users\anvesh.veerelli\Pictures\Destination\test.jpg";
           originalImage.Save(tmpFileName, System.Drawing.Imaging.ImageFormat.Bmp);
      }

1 个答案:

答案 0 :(得分:2)

您只需将输出ImageFormat更改为Jpeg即可。 即使您的文件名是JPEG,图片的内部格式也是BMP。

所以你的最后一行变成了:

originalImage.Save("", System.Drawing.Imaging.ImageFormat.Jpeg);