有許多開發人員應該是像我一樣是將 Windows 8 安裝在 VM 之中,因為有時只是想要測試一些新版本的開發工具,或是在一些特殊環境下的狀況等等,而這一次筆者想在 VM 中測試開發 WebCam 的一些功能卻發現,安裝在 VMWare 的 Windows 8 根本無法使用 WebCam 的硬體
有許多開發人員應該是像我一樣是將 Windows 8 安裝在 VM 之中,因為有時只是想要測試一些新版本的開發工具,或是在一些特殊環境下的狀況等等,而這一次筆者想在 VM 中測試開發 WebCam 的一些功能卻發現,安裝在 VMWare 的 Windows 8 根本無法使用 WebCam 的硬體,連在裝置管理員中都無法抓到 WebCam 的裝置。因此也無法在 Windows 8 裡面撰寫測試與 WebCam 相關的程式。再輾轉中,總算找到解決方案,原來,VMWare 本身就提供 Connect (Disconnect from Host) 的功能,他是一種將可移除 (Removable Device) 的實體裝視為資源的一種機制,他可以連結(Connect) 到實體 OS 未使用的裝置。
如圖(一):
當然,如果在選單中要能夠看到 WebCam 的可連結裝置,那麼您必須先關閉實體 OS 對 WebCam 的使用,這個部分只要從裝置管理員中將 WebCam 暫時關閉即可,如下:
這時開啟 VMWare 並啟動 Guest OS,在點選圖(一) 的 Connect,這時在 Windows 8 的就可以抓到 WebCam 裝置。
如下圖(三):
這時,我們原本的 Camera App 就可以正常的運作了。
點選擷取相機按鈕後,Windows 8 便可以成功的切換至相機模式,如下:
擷取相機按鈕的程式碼如下:
1: private async void btnGetCamera_Click(object sender, RoutedEventArgs e)
2: {
3: CameraCaptureUI ui = new CameraCaptureUI();
4: ui.PhotoSettings.CroppedAspectRatio = new Size(4, 3);
5: StorageFile file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);
6: if (file != null)
7: {
8: BitmapImage bitmap = new BitmapImage();
9: bitmap.SetSource(await file.OpenAsync(FileAccessMode.Read));
10: imgPhoto.Source = bitmap;
11: }
12: }
如上程式,所以拍照後,透過 bitmap 的 SetSource 方法將 StorageFile 的 Stream 已非同步方式讀取出來,最後呈現在 Image 元件上,如下:
如上分享,提供給需要的朋友。
簽名:
學習是一趟奇妙的旅程
這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。
軟體開發之路(FB 社團):https://www.facebook.com/groups/361804473860062/
Gelis 程式設計訓練營(粉絲團):https://www.facebook.com/gelis.dev.learning/
如果文章對您有用,幫我點一下讚,或是點一下『我要推薦』,這會讓我更有動力的為各位讀者撰寫下一篇文章。
非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^