5

キャンバスをpngとして保存するために、codeplexのImageToolsを使用しています。ただし、を使用していたときに同じ問題が発生しましたwriteableBitmap.SaveJpeg()。したがって、問題は画像の種類ではなく、 での保存または読み込み方法にありますIsolatedStorage

保存ボタンを押して画像を保存するとファイルは存在しますが、画像を読み込んでも何も表示されません。画像を 2 回保存すると、画像が読み込まれ、正しく表示されます。

以下は私のコードです。

保存ファイル:

ExtendedImage myImage = myCanvas.ToImage();

using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
    if (isoStore.FileExists("image.png"))
       isoStore.DeleteFile("image.png");

    using (var fileStream = isoStore.CreateFile("image.png"))
    {
        myImage.WriteToStream(fileStream, "image.png");
        fileStream.Close();
    }
}

ファイルを読み込んでいます

BitmapImage bi = new BitmapImage();

using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
    if (isoStore.FileExists("image.png"))
    {
        using (var fileStream = isoStore.OpenFile("image.png", FileMode.Open))
        {
            bi.SetSource(fileStream);
            this.img.Height = bi.PixelHeight;
            this.img.Width = bi.PixelWidth;
            this.img.Source = bi;
        }
    }
}
4

1 に答える 1

0

から画像を取得するには、このコードを試してくださいisoStore。わたしにはできる。

using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication())
{
      if (iso.FileExists(string.Format("image.png")))
         {
            string fileName = "image.png";
            string filePath = iso.GetType().GetField("m_RootDir", System.Reflection.BindingFlags.NonPublic |
            System.Reflection.BindingFlags.Instance).GetValue(iso).ToString() + fileName;
         }
}

Image のソースを filePath に設定すると、問題なくアクセスできます。

これが機能しない場合、問題は画像の保存中です。キャンバスを png または jpeg に保存するための回避策を見つける必要がある場合があります。

于 2013-11-04T08:01:31.737 に答える