1

画像の bgra バイトを含む byte[] 配列があり、そこから BitmapSource を次のように生成します。

BitmapSource bmsOut = BitmapSource.Create(
iPixelWidth, iPixelHeight, 96, 96, PixelFormats.Bgra32, null, bytOutput, iStride);      

これは wpf Image 要素で問題なく表示されます。ただし、BitmapSource からファイルを作成しようとすると:

private void mtdSave(BitmapSource bitmapSource, string path, BitmapEncoder encoder)
          {
              using (var stream = new FileStream(path, FileMode.Create))
              {
                  encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
                  encoder.Save(stream);
              }
          }

使用するエンコーダーに応じて奇妙な出力が得られます。bmp は、画像の中心にある 10x10 ピクセルの画像を黒の海に少し表示します。png は、黒なしで同じことを行います。表示された領域は、画像がサムネイルのアウトラインによって切り取られたように見えます (visula 効果を説明するためだけに)。いずれかのファイルに対応します)

何が起こっている?私は何が欠けていますか?

4

1 に答える 1

1

どの種類の BitmapEncoder を渡していますか? PngBitmapEncoder を試しましたか?

于 2012-01-16T15:18:50.103 に答える