JpegBitmapEncoder оставляет серую полосу в конце файла?

Я работаю с компонентами обработки изображений WPF, пытаясь сделать несколько простых манипуляций с изображениями. Я примерно следую за статьей MS наКак кодировать и декодировать изображение JPEG.

Мой код прост:

BitmapImage bi = new BitmapImage();

bi.BeginInit();
bi.UriSource = new Uri("D:\\Temp\\StackOverflowCapture.png");
//bi.DecodePixelWidth = 1024;
//bi.DecodePixelHeight = 768;
bi.EndInit();

var jpg                  = new JpegBitmapEncoder();
    jpg.QualityLevel     = 90;
    //jpg.FlipHorizontal = false;
    //jpg.FlipVertical   = false;
    jpg.Frames.Add(BitmapFrame.Create(bi));

var fs = new FileStream("D:\\Temp\\StackOverflow_Result.jpg", FileMode.Create);

jpg.Save( fs );
jpg = null;

Фрагмент кода создает странный артефакт, где последние несколько «строк» представляют собой сплошной серый блок. Это почти как если бы кодировщику просто не хватило пикселей для записи. Количество серого изменяется в 2 или 3 раза в зависимости от того, какое изображение я использую в качестве входных данных (различные разрешения, jpeg, png) или от параметров, которые я включаю (принудительное разрешение при декодировании). Однако чистый эффект такой же, как вы можете видеть на изображениях ниже.

Мое исходное изображение:

Выходное изображение (обратите внимание на серую полосу внизу):

Что тут происходит? Как получить чистый конверт?

Ответы на вопрос(1)

Ваш ответ на вопрос