How to change the image saving location in UWP?
By default, in SfImageEditor when we save image, the image will be getting saved in gallery. We can also able to change the image saving location.
Step 1: Create SfImageEditor sample with all necessary assemblies.
Please refer the below link to create a simple SfImageEditor sample along with the ways to configure it.
https://help.syncfusion.com/uwp/sfimageeditor/getting-started
Step 2: Get stream from ImageSaving event. Create method for selecting folders and pass the stream as argument
Step 3: Convert the stream to bitmap and save image in custom location.
The following code snippet illustrates the way to this method,
C#
public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); BitmapImage bitmapImage = new BitmapImage(); Uri uri = new Uri("ms-appx:///Assets/Image.jpg"); bitmapImage.UriSource = uri; imageeditor.ImageSource = bitmapImage; imageeditor.ImageSaving -= Imageeditor_ImageSaving; imageeditor.ImageSaving += Imageeditor_ImageSaving; } Stream stream; private void Imageeditor_ImageSaving(object sender, ImageSavingEventArgs args) { args.Cancel = true; stream = args.Stream; SelectDirectory(stream); } public async void SelectDirectory(Stream stream) { this.stream = stream; IRandomAccessStream randomAccessStream = this.stream.AsRandomAccessStream(); var wbm = new WriteableBitmap(600, 800); await wbm.SetSourceAsync(randomAccessStream); string fileName = "image.jpg"; var folderPicker = new Windows.Storage.Pickers.FolderPicker(); folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop; folderPicker.FileTypeFilter.Add("*"); Windows.Storage.StorageFolder folder = await folderPicker.PickSingleFolderAsync(); string SelectedFolderPath = folder.Path; if (folder != null) { // Application now has read/write access to all contents in the picked folder // (including other sub-folder contents) Windows.Storage.AccessCache.StorageApplicationPermissions. FutureAccessList.AddOrReplace("PickedFolderToken", folder); StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); using (var storageStream = await file.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, storageStream); var pixelStream = wbm.PixelBuffer.AsStream(); var pixels = new byte[pixelStream.Length]; await pixelStream.ReadAsync(pixels, 0, pixels.Length); encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)wbm.PixelWidth, (uint)wbm.PixelHeight, 200, 200, pixels); await encoder.FlushAsync(); } } } }
Sample link: