保存照片到应用's缓存UWP c#

本文关键字:缓存 UWP 照片 应用 保存 | 更新日期: 2023-09-27 18:03:55

我使用mediaccapture API进行捕获。但我不知道如何将照片保存到应用程序的缓存中,而不是保存到设备上的文件夹中。

private async void btnPhoto_Click(object sender, RoutedEventArgs e)
{
    // This is where we want to save to.
    var storageFolder = KnownFolders.SavedPictures;
    // Create the file that we're going to save the photo to.
    var file = await storageFolder.CreateFileAsync("sample.jpg", CreationCollisionOption.GenerateUniqueName);
    // Update the file with the contents of the photograph.         
    await _mediaCapture.CapturePhotoToStorageFileAsync(ImageEncodingProperties.CreateJpeg(), file);
}

用户最多可以拍摄五张照片并将它们发送到服务器,并且有必要不要在设备上保存照片。我该如何实现它?

保存照片到应用's缓存UWP c#

使用ApplicationData。

但是我不知道如何将照片保存到应用程序的缓存中,而不是保存到设备上的文件夹中。

我建议你使用ApplicationData。创建临时存储文件的临时文件夹:

var file=await ApplicationData.Current.TemporaryFolder.CreateFileAsync("sample.jpg", CreationCollisionOption.GenerateUniqueName);

将在磁盘中创建临时文件缓存。"系统维护"任务会随时自动删除这些文件。用户还可以使用磁盘清理功能删除这些文件。

如果您真的不想在磁盘上创建任何文件。你可以使用InMemoryRandomAccessStream:

缓存照片
var stream = new InMemoryRandomAccessStream();
await _mediaCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), stream);

或者保存照片到SoftwareBitmap,如果你想在你的应用程序中显示它们:

//save the photo to softwareBitmap:
var lowLagCapture = await _mediaCapture.PrepareLowLagPhotoCaptureAsync(ImageEncodingProperties.CreateUncompressed(MediaPixelFormat.Bgra8));
var capturePhoto = await lowLagCapture.CaptureAsync();
SoftwareBitmap softwareBitmap = capturePhoto.Frame.SoftwareBitmap;
await lowLagCapture.FinishAsync();
//load the image in image tag:
if (softwareBitmap.BitmapPixelFormat != BitmapPixelFormat.Bgra8 ||
softwareBitmap.BitmapAlphaMode == BitmapAlphaMode.Straight)
{
    softwareBitmap = SoftwareBitmap.Convert(softwareBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied);
}
var source = new SoftwareBitmapSource();
await source.SetBitmapAsync(softwareBitmap);
mainPageImage.Source = source;//mainPageImage is the image tag name