保存照片到应用'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);
}
用户最多可以拍摄五张照片并将它们发送到服务器,并且有必要不要在设备上保存照片。我该如何实现它?
使用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