从文件绝对路径获取流

时间:2014-01-10 18:49:05

标签: windows-phone-7 windows-phone-8

这可能听起来很简单,但我已经失去了很多时间寻找答案

在我的Windows Phone 8应用程序中,我使用PhotoChooserTask让用户选择照片,然后使用

获取照片的路径
string FileName = e.OriginalFileName;

其中e是Task的PhotoResult参数。 ,比方说:FileName =

“C:\ Data \ SharedData \ Comms \ Unistore \ data \ 18 \ k \ 2000000a00000018700b.dat”(从云中选择)或

“D:\ Pictures \ Camera Roll \ WP_20140110_10_40_42_1_Smart.jpg”(来自相机胶卷)

我想保存该字符串路径并将其打开并在用户重新打开应用程序时再次显示该图像。但我找不到将这些字符串转换为图像数据(BitmapImage或Stream)的方法

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

private void PhotoChooserTaskCompleted(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {                
        var image = new BitmapImage();
        image.SetSource(e.ChosenPhoto);
        SaveImageAsync(image);
    }
}

public async void SaveImageAsync(BitmapImage image)
{
    await Task.Run(SaveImage(image));
}


public async Task SaveImage(BitmapImage image)
{
    IStorageFolder folder = await ApplicationData.Current.LocalFolder
            .CreateFolderAsync("Images", CreationCollisionOption.OpenIfExists);

    IStorageFile file = await folder.CreateFileAsync(
            imageFileName, CreationCollisionOption.ReplaceExisting);

    using (Stream stream = await file.OpenStreamForWriteAsync())
    {                
        var wrBitmap = new WriteableBitmap(image);
        wrBitmap.SaveJpeg(stream, image.PixelWidth, image.PixelHeight, 100, 100);
    }
} 

答案 1 :(得分:0)

在Windows Phone 8.1中,您可以尝试" StorageFolder.GetFolderFromPathAsync"静态方法(如果此API在您的应用程序风格中可用),然后从该文件夹获取必要文件的流。