Ссылка на объект не указывает на экземпляр объекта. newBitmap был null

Написал алгоритм для изменения контрастности изображения, но выдает данную ошибку

введите сюда описание изображения

Как можно исправить ошибку?

Код для программы

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
    Bitmap newBitmap;
    Image file;
    Boolean opened = false;
    float contrast = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult dr = openFileDialog1.ShowDialog();
        
        if (dr == DialogResult.OK) // Если в диалоге была нажата кнопка ОК
        {
            file = Image.FromFile(openFileDialog1.FileName);
            pictureBox1.Image = new Bitmap(openFileDialog1.FileName); // Загружаем изображение
            pictureBox1.Image = file;
            opened = true;
        }
    }

    private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (pictureBox1.Image != null) // Если изображение в picturebox1 есть
        {
            SaveFileDialog sfd = new SaveFileDialog(); // Диалог для выбора файлов
            sfd.Filter = "Image Files (*.JPG;*.PNG) | *.JPG;*.PNG"; // Фильтр файлов
            if (sfd.ShowDialog() == DialogResult.OK) // Если нажата кнопка ОК
            {
                pictureBox1.Image.Save(sfd.FileName); // Сохраняем изображение
            }
        }
    }

    private void оттенкиСерогоToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (pictureBox1.Image != null)
        {
            Bitmap input = new Bitmap(pictureBox1.Image); // Создаем Bitmap из изображения, который находится в pictureBox1
            Bitmap output = new Bitmap(input.Width, input.Height); // Создаём Bitmap для черно-белого изображения
            for (int j = 0; j < input.Height; j++)
                    for (int i = 0; i < input.Width; i++)
                {
                    // Получаем (i,j) пиксель
                    UInt32 pixel = (UInt32)(input.GetPixel(i, j).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;
                    // Собираем новый пиксель по частям
                    UInt32 newPixel = 0xFF000000 | ((UInt32)R << 16) | ((UInt32)G << 8) | ((UInt32)B);
                    // Добавляем его в Bitmap нового изображения
                    output.SetPixel(i, j, Color.FromArgb((int)newPixel));                      
                }
                // Выводим черно-белое изображение из Bitmap в PictureBox1
            pictureBox1.Image = output;
        }
    }

    private void trackBar1_Scroll(object sender, EventArgs e)
    {
        label3.Text = trackBar1.Value.ToString();
        int r, g, b;
        var image = new PictureBox();
        var loadImage = new Bitmap(pictureBox1.Image);
        var WidthHeightImage = new Bitmap(loadImage.Width, loadImage.Height);

        for (int j = 0; j < loadImage.Height; j++)
            for (int i = 0; i < loadImage.Width; i++)
            {
                Color pixel = loadImage.GetPixel(i, j);
                r = pixel.R + trackBar1.Value;
                if (r > 255) r = 255; if (r < 0) r = 0;
                g = pixel.G + trackBar1.Value;
                if (g > 255) g = 255; if (g < 0) g = 0;
                b = pixel.B + trackBar1.Value;
                if (b > 255) b = 255; if (b < 0) b = 0;
                Color res = Color.FromArgb(r, g, b);
                WidthHeightImage.SetPixel(i, j, res);
            }
        pictureBox1.Image = WidthHeightImage;
        image.Image = WidthHeightImage;

    }

    private void trackBar2_Scroll(object sender, EventArgs e)
    {
        label4.Text = trackBar2.Value.ToString();

        contrast = 0.04f * trackBar2.Value;
        
        Bitmap bm = new Bitmap(newBitmap.Width, newBitmap.Height);

        Graphics g = Graphics.FromImage(bm);
        ImageAttributes ia = new ImageAttributes();

        ColorMatrix cm = new ColorMatrix(new float[][]{
            new float[]{contrast,0f,0f,0f,0f },
            new float[]{0f,contrast,0f,0f,0f },
            new float[]{0f,0f,contrast,0f,0f },
            new float[]{0f,0f,0f,1f,0f },
            new float[]{0.001f,0.001f,0.001f,0f,1f}});

        ia.SetColorMatrix(cm);

        g.DrawImage(newBitmap, new Rectangle(0, 0, newBitmap.Width, newBitmap.Height), 0, 0, newBitmap.Width, newBitmap.Height,GraphicsUnit.Pixel,ia);
        g.Dispose();
        ia.Dispose();
        pictureBox1.Image = bm;
    }
}
 }

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