Фон становится черным при сохранении растрового изображения - C#

В настоящее время я пытаюсь сохранить растровое изображение, но фон меняется на черный.

Я могу "Сохранить как" изображение отлично. Я также могу "сохранить" изображение. Что было гораздо сложнее, потому что мне пришлось перезаписать существующее изображение.

Однако, когда я "сохраняю" свое изображение, фон становится черным. И я понятия не имею, что вызывает это.

Вот мой код:

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();

2 ответа

Решение

Создайте пустое растровое изображение. Создайте графический объект для записи с этим пустым растровым изображением. Очистите растровое изображение и измените его цвет на белый. Затем нарисуйте изображение и сохраните растровое изображение.

            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();

Попробуйте сохранить изображение в формате PNG, а не JPEG.

Другие вопросы по тегам