操作后,图片在数据存储中的大小是原来的10倍

本文关键字:10倍 原来 存储 数据 操作 | 更新日期: 2023-09-27 18:25:53

我正在尝试检测图片中的一些绿色文本,然后处理文本下的像素。

为了做到这一点,我加载了地图的图片(没有文本)和操纵的图片。在检查RGB值的矩阵中移动,工作完成后,我再次将位图保存为.jpg(以新名称)。

问题是:加载的图片的存储大小约为3mb。新保存的图片有30mb。

宽度/高度和DPI相同。只是颜色深度高出1字节(24位->32位)。无论如何,这不可能是10倍的因素。

有人知道会发生什么吗?

或者更有趣的事情:如何用3mb保存新位图?

谢谢你的回答,-LD-

代码:

// no text, picture shows a map
Bitmap MapBitmap = new Bitmap("C:''Users''LD''Desktop''Karte''Map.jpg");    
// with green text
Bitmap OriginalBitmap = new Bitmap("C:''Users''LD''Desktop''Karte''Original.jpg");  
// manipulated text
Bitmap NeueBitmap = new Bitmap(OriginalBitmap.Width,OriginalBitmap.Height); 
// move throug matix
for (int x = 0; x < OriginalBitmap.Width; x++)
{
   for (int y = 0; y < OriginalBitmap.Height; y++)
   {
      progressBar1.Value = x * 10000 / OriginalBitmap.Width;  // show progress
      Color OriginalColor = OriginalBitmap.GetPixel(x, y);
      int r = OriginalColor.R;    // for later use
      int g = OriginalColor.G;
      int b = OriginalColor.B;
      Color MapColor = MapBitmap.GetPixel(x, y);
      int R = MapColor.R;         // for later use
      int G = MapColor.G;
      int B = MapColor.B;
      if ((g/1.5)  > r && (g/1.5)  > b)
      {   // check the green-value compared to the others
         Color NeueColor = Color.FromArgb((R + 20), (G + 20), (B + 20));
         NeueBitmap.SetPixel(x, y, NeueColor);
      }
      else
      {
         Color NeueColor = Color.FromArgb(R, G, B);
         NeueBitmap.SetPixel(x, y, NeueColor);
      }
   }
}
NeueBitmap.Save("C:''Users''LD''Desktop''Karte''Neu2.jpg");

操作后,图片在数据存储中的大小是原来的10倍

在适当的NeueBitmap.Save()重载中指定一种格式;目前,它将默认为带有.JPG扩展名的.PNG。

NeueBitmap.Save("C:''Users''LD''Desktop''Karte''Neu2.jpg", ImageFormat.Jpeg);