Windows phone 7 无法从手机中选择的照片创建位图图像

Windows phone 7 无法从手机中选择的照片创建位图图像,windows-phone-7,windows-8,windows-runtime,windows-phone-8,windows-phone,Windows Phone 7,Windows 8,Windows Runtime,Windows Phone 8,Windows Phone,我正在尝试实现一个可以处理图像的WindowsPhone8应用程序,尝试从Windows8应用程序移植它。但一开始我很快就被卡住了 我想要实现的是从手机中选择一些图片,并将它们显示在我的应用程序中,就像它们在相册中的样子一样。为此,我还尝试了一些MVVM技术。但是,当我试图从文件流创建BitmapImage时,出现了一个错误,表示我超出了范围 这是我的模型: public class SelectedPhoto : IDisposable { public Stream Data { g

我正在尝试实现一个可以处理图像的WindowsPhone8应用程序,尝试从Windows8应用程序移植它。但一开始我很快就被卡住了

我想要实现的是从手机中选择一些图片,并将它们显示在我的应用程序中,就像它们在相册中的样子一样。为此,我还尝试了一些MVVM技术。但是,当我试图从文件
流创建
BitmapImage
时,出现了一个错误,表示我超出了范围

这是我的模型:

public class SelectedPhoto : IDisposable
{
    public Stream Data { get; set; }

    public string Name { get; set; }

    public BitmapImage Image { get; set; }

    public SelectedPhoto(string name, Stream data)
    {
        Name = name;

        Data = new MemoryStream();
        data.CopyTo(Data);

        Image = new BitmapImage();
        Image.SetSource(Data); //Here's the Argument Exception. 
    }

    public void Dispose()
    {
        Data.Dispose();
    }
}
所以我在构造函数中得到了一个异常。。。我在一个
PhotoChooserTask
的代码中使用它,如下所示:

private void PhotoChooserTaskCompleted(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
        PhotosViewModel.AddPhoto(new SelectedPhoto(e.OriginalFileName, e.ChosenPhoto));
    }
}
参数Exception表示:偏移量和长度超出了数组的界限,或者计数大于从索引到源集合末尾的元素数。但我并没有以任何方式操纵流,我只是需要它,因为它是从它创建位图图像的,因为我已经看了一些例子

在这种情况下,如何从手机获取所选图像文件的位图图像?或者更好的是,我如何直接将其作为可写位图获取?因为以后,我打算做一些像素操作


欢迎使用任何类型的方法,谢谢。

要修复代码,请调用
Seek
方法返回流的开头:

public SelectedPhoto(string name, Stream data)
{
    Name = name;

    Data = new MemoryStream();
    data.CopyTo(Data);

    Data.Seek(0, SeekOrigin.Begin);

    Image = new BitmapImage();
    Image.SetSource(Data); //Here's the Argument Exception. 
}

也就是说,为什么要复制流?您可以直接使用
数据

修复代码,调用
查找
方法返回流的开头:

public SelectedPhoto(string name, Stream data)
{
    Name = name;

    Data = new MemoryStream();
    data.CopyTo(Data);

    Data.Seek(0, SeekOrigin.Begin);

    Image = new BitmapImage();
    Image.SetSource(Data); //Here's the Argument Exception. 
}

也就是说,为什么要复制流?您可以直接使用
数据

,因此流搜索是问题所在。。。愚蠢的我,我删除了流复制,它似乎工作良好,现在,谢谢!所以寻找溪流是个问题。。。愚蠢的我,我删除了流复制,它似乎工作良好,现在,谢谢!