C# 将编辑后的图像保存到相机卷

C# 将编辑后的图像保存到相机卷,c#,windows-phone-8,xna,stream,C#,Windows Phone 8,Xna,Stream,我是C#的新手,正在学习为Windows Phone 8开发。我正在制作一个图像编辑应用程序是否有办法将编辑后的图像保存在照相机胶卷中,而不是保存的图片。 使用PhotoChooserTask返回PhotoResult private WriteableBitmap _imageBitmap = null; private void Button_Click(object sender, RoutedEventArgs e) { PhotoChooser

我是C#的新手,正在学习为Windows Phone 8开发。我正在制作一个图像编辑应用程序是否有办法将编辑后的图像保存在照相机胶卷中,而不是保存的图片。

使用PhotoChooserTask返回PhotoResult

    private WriteableBitmap _imageBitmap = null;

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        PhotoChooserTask chooser = new PhotoChooserTask();
        chooser.Completed += choosenImage;
        chooser.Show();
    }

    private void choosenImage(object sender, PhotoResult e)
    {
        if (e.TaskResult != TaskResult.OK ) { return; }
        _imageBitmap.SetSource(e.ChosenPhoto);
        dummyImage.Source = _thumbImageBitmap;

        //MediaLibrary library = new MediaLibrary();
        //library.SavePictureToCameraRoll(String, Stream);
    }
我想将此照片结果(图像)保存在相机卷中。我做了一点调查发现

这种方法有助于

MediaLibrary.SavePictureToCameraRoll (String, Stream)
Save the specified image Stream as a Picture in the Windows Phone camera roll.


如何在我的代码中实现此方法?

e.ChosenPhoto
已经是一个流,因此您可以这样设置它:

编辑:这将解决两次使用流的问题。您可以简单地寻找流的开始并重用
e.ChosenPhoto
,但在回家之前我无法测试这一点

private void choosenImage(object sender, PhotoResult e)
{
    if (e.TaskResult != TaskResult.OK ) 
    { 
        return;
    }
    Stream theCopy = new Stream();
    e.ChosenPhoto.CopyTo(theCopy);
    e.ChosenPhoto.Seek( 0, SeekOrigin.Begin );

    _imageBitmap.SetSource(e.ChosenPhoto);
    dummyImage.Source = _thumbImageBitmap;

    MediaLibrary library = new MediaLibrary();
    library.SavePictureToCameraRoll(String, theCopy);
}

我试过了,但它给了我错误。”Microsoft.Xna.Framework.ni.dll中发生类型为“System.InvalidOperationException”的异常,但未在用户代码中处理。如果存在此异常的处理程序,则可以安全地继续该程序。。。。。。。。。。。。我的代码=
library.SavePictureToCameraRoll(“image.jpg”,e.ChosenPhoto)
;我已经更新了一些额外的电话,可能会解决这个问题。
private void choosenImage(object sender, PhotoResult e)
{
    if (e.TaskResult != TaskResult.OK ) 
    { 
        return;
    }
    Stream theCopy = new Stream();
    e.ChosenPhoto.CopyTo(theCopy);
    e.ChosenPhoto.Seek( 0, SeekOrigin.Begin );

    _imageBitmap.SetSource(e.ChosenPhoto);
    dummyImage.Source = _thumbImageBitmap;

    MediaLibrary library = new MediaLibrary();
    library.SavePictureToCameraRoll(String, theCopy);
}