У PNG изображения после изменения появляется черный фон

Делаю редактор изображений на ASP.Net Core. Изначально есть такое изображение с прозрачным фоном в формате png. Само изображение

После применения функции черно-белого изображения картинка становится такой.Измененное изображение

Сам код обработки изображения изначально был такой:

[HttpGet]
    public IActionResult UpdateBlackWhiteImage()    //черно-белое изображение
    {
        image = new Bitmap(Base64ToBimap(imgBase64));

        using (var fastBitmap = new FastBitmap(image))
        {
            for (int x = 0; x < fastBitmap.Width; x++)
            {
                for (int y = 0; y < fastBitmap.Height; y++)
                {
                    // получаем (i, j) пиксель
                    uint pixel = (uint)(fastBitmap.GetPixel(x, y).ToArgb());

                    // получаем компоненты цветов пикселя
                    float R = (float)((pixel & 0x00FF0000) >> 16); // красный
                    float G = (float)((pixel & 0x0000FF00) >> 8); // зеленый
                    float B = (float)(pixel & 0x000000FF); // синий
                                                           // делаем цвет черно-белым (оттенки серого) - находим среднее арифметическое
                    R = G = B = (R + G + B) / 3.0f;

                    // собираем новый пиксель по частям (по каналам)
                    uint newPixel = 0xFF000000 | ((uint)R << 16) | ((uint)G << 8) | ((uint)B);

                    // добавляем его в Bitmap нового изображения
                    fastBitmap.SetPixel(x, y, Color.FromArgb((int)newPixel));
                }
            }                    
        }

        bitmapBytes = BitmapToBytes(image);
        image.Dispose();

        imgBase64 = Convert.ToBase64String(bitmapBytes);
        ViewData["imageLocation"] = "data:image/" + fileExtension + ";base64," + imgBase64;

        return View("Index");
    }

Пробовал вместо newPixel = 0xFF000000 ставить ноль для альфа канала, все равно при повторной отладке у него значение 255. Помимо этого есть также функция поворота изображения, где также сохраняется ошибка. Поворот изображения

[HttpGet]
    public IActionResult UpdateRotate180Image() //поворот на 180
    {
        image = new Bitmap(Base64ToBimap(imgBase64));

        image.RotateFlip(RotateFlipType.Rotate180FlipNone);

        bitmapBytes = BitmapToBytes(image);
        image.Dispose();

        imgBase64 = Convert.ToBase64String(bitmapBytes);
        ViewData["imageLocation"] = "data:image/" + fileExtension + ";base64," + imgBase64;

        return View("Index");
    }

Пожалуйста, помогите решить данную проблему, чтобы после изменения изображение у него также оставался белый фон.


Ответы (0 шт):