JpegBitmapEncoder hinterlässt einen grauen Streifen am Ende der Datei?

Ich arbeite mit den WPF-Imaging-Komponenten, um einige einfache Bildmanipulationen durchzuführen. Ich verfolge grob den MS-Artikel überSo codieren und decodieren Sie ein JPEG-Bild.

Mein Code ist einfach:

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;

Das Code-Snippet erzeugt ein seltsames Artefakt, bei dem die letzten "Linien" ein grauer Block sind. Es ist fast so, als würden dem Encoder gerade die Pixel zum Schreiben ausgehen. Die Menge an Grau variiert um den Faktor 2 oder 3, je nachdem, welches Bild ich als Eingabe verwende (verschiedene Auflösungen, JPEG, PNG) oder welche Optionen ich aktiviere (Auflösung beim Dekodieren erzwingen). Der Nettoeffekt ist jedoch der gleiche, wie Sie aus den folgenden Bildern ersehen können.

Mein Quellbild ist:

Ausgabebild (beachten Sie das graue Band unten):

Was ist denn hier los? Wie bekomme ich einen sauberen Konverter?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage