private async Task <Windows.Storage.StorageFile> ReencodePhotoAsync( Windows.Storage.StorageFile tempStorageFile, Windows.Storage.FileProperties.PhotoOrientation photoRotation) { Windows.Storage.Streams.IRandomAccessStream inputStream = null; Windows.Storage.Streams.IRandomAccessStream outputStream = null; Windows.Storage.StorageFile photoStorage = null; try { inputStream = await tempStorageFile.OpenAsync(Windows.Storage.FileAccessMode.Read); var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(inputStream); photoStorage = await Windows.Storage.KnownFolders.PicturesLibrary.CreateFileAsync(PHOTO_FILE_NAME, Windows.Storage.CreationCollisionOption.GenerateUniqueName); outputStream = await photoStorage.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite); outputStream.Size = 0; var encoder = await Windows.Graphics.Imaging.BitmapEncoder.CreateForTranscodingAsync(outputStream, decoder); var properties = new Windows.Graphics.Imaging.BitmapPropertySet(); properties.Add("System.Photo.Orientation", new Windows.Graphics.Imaging.BitmapTypedValue(photoRotation, Windows.Foundation.PropertyType.UInt16)); await encoder.BitmapProperties.SetPropertiesAsync(properties); await encoder.FlushAsync(); } finally { if (inputStream != null) { inputStream.Dispose(); } if (outputStream != null) { outputStream.Dispose(); } var asyncAction = tempStorageFile.DeleteAsync(Windows.Storage.StorageDeleteOption.PermanentDelete); } return(photoStorage); }
private async Task<Windows.Storage.StorageFile> ReencodePhotoAsync( Windows.Storage.Streams.IRandomAccessStream stream, Windows.Storage.FileProperties.PhotoOrientation photoRotation) { Windows.Storage.Streams.IRandomAccessStream inputStream = null; Windows.Storage.Streams.IRandomAccessStream outputStream = null; Windows.Storage.StorageFile photoStorage = null; try { inputStream = stream; var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(inputStream); photoStorage = await Windows.Storage.KnownFolders.PicturesLibrary.CreateFileAsync(PHOTO_FILE_NAME, Windows.Storage.CreationCollisionOption.GenerateUniqueName); outputStream = await photoStorage.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite); outputStream.Size = 0; var encoder = await Windows.Graphics.Imaging.BitmapEncoder.CreateForTranscodingAsync(outputStream, decoder); var properties = new Windows.Graphics.Imaging.BitmapPropertySet(); properties.Add("System.Photo.Orientation", new Windows.Graphics.Imaging.BitmapTypedValue(photoRotation, Windows.Foundation.PropertyType.UInt16)); await encoder.BitmapProperties.SetPropertiesAsync(properties); await encoder.FlushAsync(); } finally { if (inputStream != null) { inputStream.Dispose(); } if (outputStream != null) { outputStream.Dispose(); } } return photoStorage; }