メトロ アプリで、(Image 型のオブジェクトに格納されている) 画像を格納用の文字列に変換する必要があります (後で、表示用の Image オブジェクトに変換する必要があります)。
.NET 4.0 などで画像を base64 文字列に変換するための多くの回答を見つけましたが、4.5 では System.Windows.Bitmap 名前空間がありません (Image クラスは Windows.UI.Xaml.Media.Imaging にあります)。 4.0 で「Save()」を可能にしたその名前空間にあったメソッドは、4.5 にはないようです...見つけられない場合を除きます。
ここでこれを行う例がありますが、私が言ったように、メトロアプリ/.NET 4.5では機能しません
何か案は?
詳細: これを行うメソッドは、イメージ オブジェクトを含むインスタンス フィールドを変換し (source プロパティを使用しましたが、これは正しいですか?)、変換の結果の文字列をインスタンス文字列フィールドに格納する必要があります。次に、このオブジェクト全体をシリアライズし、Image フィールドを無視して、後でデシリアライズし、文字列を Image フィールドに復元して表示することができます。これまでのところ、DataContractSerializer を使用して画像から文字列をシリアル化しようとしましたが、気に入らないようです。画像から文字列を取得したら、それをシリアル化できますが、これまでに行ったことはありません。
また、間違いなく正しい.net 4.5ドキュメントは、次のページだけのようです: http://msdn.microsoft.com/library/windows/apps/
.net 4.5 の「通常の外観」の msdn サイトのページは、メトロ アプリで常に機能するとは限りませんか? (ただの理論?)
【解決済み】
ついに手に入れました!これをしなければならない他の人のために、答えはここにあります:
これは私がしました
var reader = new DataReader(myMemoryStream.GetInputStreamAt(0));
var bytes = new byte[myMemoryStream.Size];
await reader.LoadAsync((uint)myMemoryStream.Size);
reader.ReadBytes(bytes);
このシーケンスの後、バイト配列bytes
にはストリームからのデータが含まれます。そこから、文字列を値に設定します
Convert.ToBase64String(bytes);