转换流时出错

时间:2013-09-08 10:15:52

标签: c# windows-phone-7 windows-phone-8 windows-phone isolatedstorage

我尝试从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();
}

1 个答案:

答案 0 :(得分: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);
    }
}