1.更新項(xiàng)目中package.appmanifest 文件,本文讓webcam和microphone可用。只需要在功能選項(xiàng)卡中勾選對(duì)應(yīng)的框即可。如下圖所示:
![](/d/20211018/97755f2847712d8c9fafbb2f31f56355.gif)
如果不按照上面的設(shè)置,那么這些功能是不可以使用的,所以,確保首先設(shè)置好了。
在Windows 8中,非常好的是攝像頭的所有事情都由你來(lái)決定。也就是說(shuō),有些事情,你不得不考慮好了。首先,當(dāng)你試圖訪問(wèn)攝像頭時(shí),程序?qū)?huì)提示用戶將使用攝像頭和麥克風(fēng),由用戶決定是否授權(quán)。
2.代碼實(shí)現(xiàn)
1).照片的獲取和保存
private async void Camera_Click(object sender, RoutedEventArgs e)
{
CameraCaptureUI camera = new CameraCaptureUI();
camera.PhotoSettings.CroppedAspectRatio = new Size(16, 9);//獲得圖片的寬高比例
StorageFile file = await camera.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null)
{
StorageFolder folder = KnownFolders.PicturesLibrary; //將圖片保存到圖片庫(kù)中
await file.CopyAsync(folder,file.Name,NameCollisionOption.ReplaceExisting);
}/p>
p> }
這里有幾個(gè)選項(xiàng)可以設(shè)置(比如分辨率和計(jì)時(shí)器),然后通過(guò)tap 或者單擊屏幕,就可以觸發(fā)照相。如果我們?cè)O(shè)置了一個(gè)CroppedAspectRatio,那么將會(huì)看到畫面中將會(huì)出現(xiàn)四個(gè)白點(diǎn),畫面中有4個(gè)白色的圓圈,表示裁減的區(qū)域。用戶可以改變這個(gè)box的size,不過(guò)指定一個(gè)CroppedAspectRatio,我們可以強(qiáng)制用戶選這個(gè)具有一定比例的圖片。在示例中,我使用16:9,如果1:1這是一個(gè)正方形圖片。沒(méi)有這個(gè)選項(xiàng)的話,用戶就不必裁減圖片,不過(guò)在bottom中的菜單選項(xiàng)中,有一個(gè)任意裁剪的選項(xiàng):
![](/d/20211018/b02bb9650784b5d6fac3466f1525872b.gif)
如果用戶選擇Crop,那么用戶就可以裁減圖片的任意內(nèi)容:
最后,當(dāng)用戶點(diǎn)擊OK按鈕,將會(huì)返回一個(gè)圖片到我們程序中,這個(gè)圖片我們可以隨意使用。
2).獲得視頻和保存視頻
private async void Video_Click(object sender, RoutedEventArgs e)
{
CameraCaptureUI video = new CameraCaptureUI();
video.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4;
video.VideoSettings.AllowTrimming = true;
video.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.HighestAvailable;
video.VideoSettings.MaxDurationInSeconds = 600;
StorageFile file = await video.CaptureFileAsync(CameraCaptureUIMode.Video);
if (file != null)
{
StorageFolder folder = KnownFolders.VideosLibrary;
await file.CopyAsync(folder,file.Name,NameCollisionOption.ReplaceExisting);
}
}
首先可以指定視頻的格式:MP4或WMV。一般你是看不出這些格式的區(qū)別的。MP4要比WMV使用更流行,但是MP4文件會(huì)很大,所以值得考慮一下。
其次,我將AllowTrimming設(shè)置為true,這樣用戶可以選擇根據(jù)喜好,選擇錄制視頻的片段。如下是相關(guān)截圖,用戶可以拖動(dòng)白色的裁減圈來(lái)裁減視頻:
![](/d/20211018/6d7d02c56371d4214e510b43bfce994e.gif)
第三,我指定了一個(gè)MaxDurationInSeconds,這個(gè)值顯示用戶錄制視頻的最長(zhǎng)時(shí)間。如果用戶錄制的視頻比這個(gè)時(shí)間長(zhǎng),那么用戶只能選擇30秒(或者是你指
定的一個(gè)長(zhǎng)度)的視頻。
最后,我還指定了一個(gè)MaxResolution,這是管理用戶可以錄制的分辨率,這也決定了最終文件的大小,有下面四個(gè)可選項(xiàng):
![](/d/20211018/1b8c25d5e20a35f374ce32a484e8af9c.gif)
以上就完成了windows8中攝像頭的應(yīng)用。
簡(jiǎn)單的來(lái)說(shuō),從用戶攝像頭獲取相片和視頻的很容易的,并且可以定制。大多數(shù)復(fù)雜的UI都是有Windows 8直接處理了,所以,我們不用擔(dān)心與用戶的交互
問(wèn)題 。