Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menggunakan kelas CameraCaptureUI untuk mengambil foto atau video dengan menggunakan antarmuka pengguna kamera yang terpasang di Windows. Fitur ini memungkinkan aplikasi Anda mendapatkan foto atau video yang diambil pengguna hanya dengan beberapa baris kode.
Jika Anda ingin menyediakan antarmuka pengguna kamera Anda sendiri, atau jika skenario Anda memerlukan kontrol operasi penangkapan yang lebih kuat dan tingkat rendah, maka Anda harus menggunakan kelas MediaCapture , dan menerapkan pengalaman pengambilan Anda sendiri. Untuk informasi selengkapnya, lihat Pengambilan dasar foto, video, dan audio dengan MediaCapture.
Perhatikan bahwa kelas CameraCaptureUI di namespace Microsoft.Windows.Media.Capture tidak didukung untuk aplikasi UWP. Untuk informasi tentang menggunakan versi UWP fitur ini, lihat Mengambil foto dan video di aplikasi UWP dengan UI kamera bawaan Windows
Menggunakan kelas CameraCaptureUI untuk mengambil foto
Buat instans baru CameraCaptureUI, yang melewati properti AppWindow.Id jendela aplikasi Anda. Properti PhotoSettings memungkinkan Anda menentukan beberapa batasan pada foto yang diambil, termasuk format file dan resolusi maksimum dan apakah UI memungkinkan pengguna untuk memotong foto setelah diambil. Properti VideoSettings menyediakan properti serupa untuk pengambilan video, seperti resolusi dan durasi maksimum dan apakah UI memungkinkan pengguna untuk memangkas video setelah diambil.
Panggil CaptureFileAsync untuk meluncurkan UI pengambilan kamera secara asinkron. Gunakan salah satu nilai dari CameraCaptureUIMode untuk menentukan apakah UI harus mengizinkan pengambilan foto, pengambilan video, atau keduanya. Ketika CaptureFileAsync selesai, itu akan mengembalikan objek file StorageFile yang berisi foto atau video yang diambil. Jika objek yang dikembalikan null, artinya pengguna membatalkan operasi penangkapan atau terjadi kesalahan.
Contoh berikut menunjukkan peluncuran CameraCaptureUI untuk pengambilan foto, menentukan format gambar sebagai PNG dan menonaktifkan pemotongan. Dalam contoh ini foto yang diambil diatur sebagai sumber untuk kontrol Gambar .
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
}
Menggunakan kelas CameraCaptureUI untuk mengambil video
Contoh berikut menunjukkan peluncuran CameraCaptureUI untuk pengambilan video, menentukan video maksimum sebagai definisi standar dan menonaktifkan pemangkasan. Dalam contoh ini foto yang diambil diatur sebagai sumber untuk kontrol 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
}
Memindahkan dan mengganti nama file media yang diambil
CameraCaptureUI membuat nama acak untuk file media yang diambil, sehingga Anda mungkin ingin mengganti nama dan memindahkan file yang diambil agar tetap terorganisir. Contoh berikut memindahkan dan mengganti nama file yang diambil.
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