0

StackOverflow で見つけた関数をプロジェクトに使用します: https://stackoverflow.com/a/6484754/9535211
この関数の目的は、System.Windows.Media.Imaging.BitmapImage を System.Drawing に変換することです。ビットマップ。

public Bitmap BitmapImage2Bitmap(BitmapImage bitmapImage)
{

            using (MemoryStream outStream = new MemoryStream())
            {
                BitmapEncoder enc = new BmpBitmapEncoder();
                enc.Frames.Add(BitmapFrame.Create(bitmapImage));
                enc.Save(outStream);
                System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream);
                return (new Bitmap(bitmap));
            }
}

それはかなりうまく機能しますが(本当に重い場合でも)、呼び出されるたびに 例外をスロー
します:

enc.Save(アウトストリーム);

消えるようにする方法はありますか?
ご協力いただきありがとうございます !

4

1 に答える 1

-1

渡す BitmapImage が有効であることを確認する必要があります。BitmapEncoder.Save のドキュメントによると、発生しているエラーは、「フレーム」カウントがゼロ以下の結果です。

フレームが適切に追加され、bitmapImage が正しい値で渡されていることを確認してください。

于 2018-10-24T13:40:22.017 に答える