使用FileSavePicker在Windows Phone 8.1中保存图像

时间:2014-07-17 14:04:05

标签: c# windows-runtime windows-phone-8.1

我想使用文件保存选择器保存图像。我使用this链接保存,但它仅用于文本,我如何修改它以保存图像?

1 个答案:

答案 0 :(得分:3)

正如您提供的the link,我假设您在Continuation之后设法获得 StorageFile (这是它在WP8.1运行时的工作方式)。

我还假设您的图像中有 Stream ,或者您知道如何获得这样的图像。基于这两个,您可以将图像以 png 格式保存到选择器选择的文件中,例如:

public async Task SaveStreamAsync(IRandomAccessStream streamToSave, StorageFile destination)
{
    BitmapDecoder bmpDecoder = await BitmapDecoder.CreateAsync(streamToSave);
    PixelDataProvider pixelData = await bmpDecoder.GetPixelDataAsync(BitmapPixelFormat.Rgba8, BitmapAlphaMode.Straight, null, ExifOrientationMode.RespectExifOrientation, ColorManagementMode.DoNotColorManage);
    using (var destFileStream = await destination.OpenAsync(FileAccessMode.ReadWrite))
    {
        BitmapEncoder bmpEncoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, destFileStream);
        uint yourWidthAndOrHeight = 1024;
        bmpEncoder.SetPixelData(BitmapPixelFormat.Rgba8, BitmapAlphaMode.Straight, yourWidthAndOrHeight, yourWidthAndOrHeight, 300, 300, pixelData.DetachPixelData());
        await bmpEncoder.FlushAsync();
    }
}

另外,请完成Dispose streamToSave(以及其他资源)后再使用它们。

如果您查看BitmapEncoderBitmapDecoder课程,那么您会看到更多选项,包括转化和各种属性。

(我没有测试过粗糙的代码,但希望它能正常工作)