WPF-запись / чтение BitmapImage to XML завершается с ошибкой «Нет компонента обработки изображений ...» - PullRequest
1 голос
/ 12 августа 2011

Я пытаюсь записать / прочитать BitmapImage в Xml с использованием классов XmlReader / XmlWriter. При записи я вижу хороший длинный раздел CDATA в выходном XML-файле. При чтении в я вижу, что он действительно читает в том же разделе данных 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"))

Есть идеи?

...