Используя блоки using
, вы удаляете изображения, как только покидаете область применения.
попробуйте заменить эти две строки сверху:
using (Bitmap bmp = new Bitmap(sourceImage))
using (Bitmap redBmp = new Bitmap(sourceImage.Width, sourceImage.Height))
на:
Bitmap bmp = new Bitmap(sourceImage);
Bitmap redBmp = new Bitmap(sourceImage.Width, sourceImage.Height);
теперь это должно работать, в зависимости от логики вашей программы вам придется впоследствии утилизировать эти изображения вручную.
вы, вероятно, можете утилизировать bmp
также с использованием, но, конечно, нетобъект redBmp
, поскольку вы в основном возвращаете его, так что либо вы клонируете его и возвращаете клон, либо не утилизируете его, либо возвращаете удаленный непригодный объект, как то, что происходит сейчас.