1

次のように、画像ストリームを取得してからIsolatedStorageビットマップ画像を割り当てようとします。

using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(filePath, FileMode.Open, isolatedStorage))
{
    BitmapImage image = new BitmapImage();
    image.SetSource(fileStream);
    return image;
}

しかし、image.SetSource(fileStream)インラインでは、次のエラーが発生します。

コンポーネントが見つかりません。(HRESULT からの例外: 0x88982F50)

更新ブロックを使用して削除しましたが、その行に到達したときにエラーが発生します。そもそもファイルを間違って書いているのではないでしょうか。これは私がファイルを保存するために行うことです:

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();

if (!isolatedStorage.DirectoryExists("MyImages"))
{
    isolatedStorage.CreateDirectory("MyImages");
}

var filePath = Path.Combine("MyImages", name + ".jpg");

using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(filePath, FileMode.Create, isolatedStorage))
{
    StreamWriter sw = new StreamWriter(fileStream);
    sw.Write(image);
    sw.Close();
}
4

1 に答える 1

1

画像を保存するコードが間違っています。image.ToString()実際の画像ではなく、の結果を書いています。経験則として、StreamWriterは文字列をストリームに書き込むために使用されることを覚えておいてください。バイナリ データの書き込みには使用しないでください。

using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (var fileStream = new IsolatedStorageFileStream(filePath, FileMode.Create, isolatedStorage))
    {
        var bitmap = new WriteableBitmap(image, null);
        bitmap.SaveJpeg(fileStream, bitmap.PixelWidth, bitmap.PixelHeight, 0, 100);
    }
}
于 2013-09-08T12:07:02.057 に答える