Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать класс CameraCaptureUI для записи фотографий или видео с помощью пользовательского интерфейса камеры, встроенного в Windows. Эта функция позволяет приложению получать фотографии или видео, захваченные пользователем, с несколькими строками кода.
Если вы хотите предоставить собственный пользовательский интерфейс камеры или если в вашем сценарии требуется более надежный, низкий уровень управления операцией захвата, то следует использовать класс MediaCapture и реализовать собственный интерфейс записи. Дополнительные сведения см. в разделе Основы фото-, видео- и аудиосъемки с использованием MediaCapture.
Использование класса CameraCaptureUI для записи фотографий
Создайте новый экземпляр CameraCaptureUI, передавая свойство AppWindow.Id окна приложения. Свойство PhotoSettings позволяет указать некоторые ограничения на захваченную фотографию, включая формат файла и максимальное разрешение и возможность пользовательского интерфейса обрезать фотографию после захвата. Свойство VideoSettings предоставляет аналогичные свойства для записи видео, например максимальное разрешение и длительность, а также возможность ли пользовательского интерфейса обрезать видео после его записи.
Вызовите CaptureFileAsync , чтобы запустить пользовательский интерфейс записи камеры асинхронно. Используйте одно из значений в CameraCaptureUIMode , чтобы указать, должен ли пользовательский интерфейс разрешать запись фотографий, запись видео или оба. После завершения CaptureFileAsync возвращается объект файла StorageFile , содержащий захваченную фотографию или видео. Если возвращенный объект имеет значение NULL, это означает, что пользователь отменил операцию записи или произошла ошибка.
В следующем примере показано, как запустить CameraCaptureUI для фотозахвата, указав формат изображения в формате PNG и отключив обрезку. В этом примере захваченная фотография устанавливается в качестве источника для элемента управления Image .
var cameraCaptureUI = new CameraCaptureUI(this.AppWindow.Id);
cameraCaptureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Png;
cameraCaptureUI.PhotoSettings.AllowCropping = false;
// Capture a photo asynchronously
StorageFile photo = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (photo != null)
{
// Photo capture was successful
// Show the captured photo in a XAML Image control
using (IRandomAccessStream fileStream = await photo.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
// Set the image source to the selected bitmap
BitmapImage bitmapImage = new BitmapImage();
await bitmapImage.SetSourceAsync(fileStream);
iCapturedImage.Source = bitmapImage;
}
} else
{
// Photo capture failed or was cancelled
}
Использование класса CameraCaptureUI для записи видео
В следующем примере показано, как запустить CameraCaptureUI для захвата видео, указав максимальное значение видео в качестве стандартного определения и отключения обрезки. В этом примере захваченная фотография устанавливается в качестве источника для элемента управления MediaPlayerElement .
var cameraCaptureUI = new CameraCaptureUI(this.AppWindow.Id);
cameraCaptureUI.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.StandardDefinition;
cameraCaptureUI.VideoSettings.AllowTrimming = true;
StorageFile videoFile = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Video);
if (videoFile != null)
{
// Video capture was successful
// Show the captured video in a MediaPlayerElement control
mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(videoFile);
mediaPlayerElement.MediaPlayer.Play();
}
else
{
// Video capture failed or was cancelled
}
Перемещение и переименование захваченных файлов мультимедиа
CameraCaptureUI создает случайные имена для захваченных файлов мультимедиа, поэтому вам может потребоваться переименовать и переместить захваченные файлы, чтобы обеспечить их упорядочение. В следующем примере перемещается и переименовывается захваченный файл.
StorageFile photo = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (photo != null)
{
// Move and rename captured photo
StorageFolder destinationFolder =
await ApplicationData.Current.LocalFolder.CreateFolderAsync("ProfilePhotoFolder",
CreationCollisionOption.OpenIfExists);
await photo.CopyAsync(destinationFolder, "ProfilePhoto.jpg", NameCollisionOption.ReplaceExisting);
await photo.DeleteAsync();
}
Windows developer