in PhotoEditor/DetailPage.cpp [594:622]
IAsyncAction DetailPage::SaveButton_Click(IInspectable const&, RoutedEventArgs const&)
{
// Setup the picker.
auto picker = FileSavePicker{};
picker.SuggestedStartLocation(PickerLocationId::PicturesLibrary);
picker.SuggestedFileName(L"New Image");
picker.FileTypeChoices().Insert(L"Images", winrt::single_threaded_vector<hstring>({ L".jpg" }));
if (auto file = co_await picker.PickSaveFileAsync())
{
if (auto stream = co_await file.OpenAsync(Windows::Storage::FileAccessMode::ReadWrite))
{
// Create the encoder from the stream.
auto encoder = co_await BitmapEncoder::CreateAsync(BitmapEncoder::JpegEncoderId(), stream);
RenderTargetBitmap renderTargetBitmap{};
co_await renderTargetBitmap.RenderAsync(MainImage());
IBuffer pixels = co_await renderTargetBitmap.GetPixelsAsync();
auto newBuffer = SoftwareBitmap::CreateCopyFromBuffer
(pixels, BitmapPixelFormat::Bgra8, Item().ImageProperties().Width(), Item().ImageProperties().Height());
encoder.SetSoftwareBitmap(newBuffer);
co_await encoder.FlushAsync();
co_await Windows::Storage::CachedFileManager::CompleteUpdatesAsync(file);
}
}
}