1

XmlReader/XmlWriter クラスを使用して BitmapImage を Xml に読み書きしようとしています。書き出すと、出力 Xml ファイルに長い CDATA セクションが表示されます。読み込むと、同じ CDATA セクション データを実際に読み込んでいることがわかります。しかし、BitmapImage を再作成しようとすると、エラーで失敗します...

"No imaging component suitable to complete this operation was found."

...下の「image.StreamSource = stream」という行に...

Public Sub WriteXmlImage(ByVal writer As XmlWriter, ByVal image as BitmapImage)
  Using stream As New MemoryStream
    Dim encoder = New PngBitmapEncoder
      encoder.Frames.Add(BitmapFrame.Create(image))
      encoder.Save(stream)
      writer.WriteCData(Convert.ToBase64String(stream.ToArray()))
    End Using
End Sub

Public Function ReadXmlImage(ByVal reader As XmlReader) As BitmapImage
  Using stream As New IO.MemoryStream(Convert.FromBase64String(reader.Value))
    Dim image As New BitmapImage
    image.BeginInit()
    image.StreamSource = stream
    image.EndInit()
    return image
  End Using
End Sub

テストでは、次の簡単なコードを使用してテスト BitmapImage を作成します...

Dim image As New BitmapImage(New Uri("c:\devil.png"))

何か案は?

4

0 に答える 0