【问题标题】:Background Turns Black When Saving Bitmap - C#保存位图时背景变黑 - C#
【发布时间】:2012-01-09 03:50:42
【问题描述】:

我目前正在尝试保存位图图像,但背景变为黑色。

我可以完美地“另存为”图像。我也可以“保存”图像。这要困难得多,因为我必须覆盖现有的图像。

但是,当我“保存”我的图像时,背景变黑了。而且我不知道是什么原因造成的。

这是我的代码:

Bitmap tempImage = new Bitmap(DrawArea);

DrawArea.Dispose();

if (extension == ".jpeg")
    tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
else
    tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);

DrawArea = new Bitmap(tempImage);
pictureBox1.Image = DrawArea;

tempImage.Dispose();

【问题讨论】:

标签: c# image-processing bitmap


【解决方案1】:

创建一个空白位图。创建一个图形对象以使用该空白位图进行写入。清除位图并将其颜色更改为白色。然后绘制图像然后保存位图。

            Bitmap blank = new Bitmap(DrawArea.Width, DrawArea.Height);
            Graphics g = Graphics.FromImage(blank);
            g.Clear(Color.White);
            g.DrawImage(DrawArea, 0, 0, DrawArea.Width, DrawArea.Height);

            Bitmap tempImage = new Bitmap(blank);
            blank.Dispose();
            DrawArea.Dispose();

            if (extension == ".jpeg")
                tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
            else
                tempImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);

            DrawArea = new Bitmap(tempImage);
            pictureBox1.Image = DrawArea;

            tempImage.Dispose();

【讨论】:

  • 很高兴看到我的超级老问题可以帮助别人。
  • 您的解决方案已被使用(赞成),但 g.save() 是如何在这里发生的?我创建了一个新的位图,新的图形(位图),添加所有内容然后bitmap.save,这里如何将图形内容推送到位图?
【解决方案2】:

尝试将图像保存为 PNG 格式而不是 JPEG..

【讨论】:

  • 当然不是。这在 png 中也不起作用。
猜你喜欢
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2019-01-06
  • 1970-01-01
  • 2011-05-03
相关资源
最近更新 更多