Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como usar a classe CameraCaptureUI para capturar fotos ou vídeos usando a interface do usuário da câmera interna no Windows. Esse recurso permite que seu aplicativo obtenha uma foto ou vídeo capturado pelo usuário com apenas algumas linhas de código.
Se você quiser fornecer sua própria interface do usuário da câmera ou se seu cenário exigir um controle mais robusto e de baixo nível da operação de captura, use a classe MediaCapture e implemente sua própria experiência de captura. Para obter mais informações, consulte a captura básica de foto, vídeo e áudio com MediaCapture.
Usar a classe CameraCaptureUI para capturar fotos
Crie uma nova instância do CameraCaptureUI, passando a propriedade AppWindow.Id da janela do aplicativo. A propriedade PhotoSettings permite que você especifique algumas restrições na foto capturada, incluindo o formato de arquivo e a resolução máxima e se a interface do usuário permite que o usuário corte a foto depois de ser capturada. A propriedade VideoSettings fornece propriedades semelhantes para captura de vídeo, como a resolução e duração máximas e se a interface do usuário permite que o usuário corte o vídeo depois que ele é capturado.
Chame CaptureFileAsync para iniciar a interface de captura da câmera de forma assíncrona. Use um dos valores do CameraCaptureUIMode para especificar se a interface do usuário deve permitir a captura de fotos, a captura de vídeo ou ambos. Quando CaptureFileAsync for concluído, ele retornará um objeto de arquivo StorageFile contendo a foto ou o vídeo capturado. Se o objeto retornado for nulo, isso significa que o usuário cancelou a operação de captura ou ocorreu um erro.
O exemplo a seguir demonstra a inicialização do CameraCaptureUI para captura de fotos, especificando o formato de imagem como PNG e desabilitando o corte. Neste exemplo, a foto capturada é definida como a origem de um controle de imagem .
- C#
- C++/WinRT
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
}
Usar a classe CameraCaptureUI para capturar vídeos
O exemplo a seguir demonstra a inicialização do CameraCaptureUI para captura de vídeo, especificando o vídeo máximo como definição padrão e desabilitando o corte. Neste exemplo, a foto capturada é definida como a origem de um controle MediaPlayerElement .
- C#
- C++/WinRT
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
}
Mover e renomear arquivos de mídia capturados
O CameraCaptureUI cria nomes aleatórios para arquivos de mídia capturados, portanto, talvez você queira renomear e mover arquivos capturados para mantê-los organizados. O exemplo a seguir move e renomeia um arquivo capturado.
- C#
- C++/WinRT
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