Windows Phone App for Windows Phone上的照片捕获

时间:2014-05-12 09:55:26

标签: c# windows xaml windows-phone-8.1 win-universal-app

嗯,我的问题很简单:
如何使用相机拍摄Windows Store App Windows Phone 8.1的照片?
MSDN上的示例使用Windows.Media.Capture.CameraCaptureUI,该版本在Windows Phone上无法使用,或者用于Silverlight。 我无法使用Windows Runtime找到专门针对Windows Phone应用的任何文档或示例 如果有人知道,或者甚至有这方面的文件,我会很高兴。

3 个答案:

答案 0 :(得分:48)

在WP8.1运行时(也在Silverlight中),您可以使用MediaCapture。简而言之:

// First you will need to initialize MediaCapture
Windows.Media.Capture.MediaCapture  takePhotoManager = new Windows.Media.Capture.MediaCapture();
await takePhotoManager.InitializeAsync();

如果您需要预览,可以使用CaptureElement

// In XAML: 
<CaptureElement x:Name="PhotoPreview"/>

然后在后面的代码中你可以像这样开始/停止预览:

// start previewing
PhotoPreview.Source = takePhotoManager;
await takePhotoManager.StartPreviewAsync();
// to stop it
await takePhotoManager.StopPreviewAsync();

最后拍摄照片时,您可以将其直接转到文件CapturePhotoToStorageFileAsync或流CapturePhotoToStreamAsync

ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();

// a file to save a photo
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
        "Photo.jpg", CreationCollisionOption.ReplaceExisting);

await takePhotoManager.CapturePhotoToStorageFileAsync(imgFormat, file);

如果您想拍摄视频,请here is more information

另外,不要忘记在{1}}的清单文件中添加Webcam,在Capabilities中添加Front/Rear Camera


如果您需要选择相机(前/后),您需要获取相机ID,然后使用所需设置初始化Requirements

MediaCapture

答案 1 :(得分:3)

在通用Windows Phone 8.1(WinRT)应用程序中,不再可能直接跳入内置相机应用程序并在拍摄照片时接收回调。

为此,您必须如上所述实施Windows.Media.Capture.MediaCapture。曾经有CameraCatureUI但它在Windows Phone 8.1的WinRT应用程序中不可用。

但是有一种“解决方法”。您可以使用Windows.Storage.Pickers.FileOpenPicker并将其配置为选择图像。现在选择器将有一个相机按钮。用户可以单击相机按钮,内置的相机应用程序将打开。用户拍完照片后,您会在应用中收到回电信息。 FileOpenPicker回调实现起来有点烦人,但它确实有效。如果您可以接受可用性影响,那么这可能是一种有效的方法。

在2014年的微软建设大会期间,有一个关于这个主题的会议。You can watch the session online with this link.

答案 2 :(得分:0)

您可以在this链接上采用该方法。一切都得到了很好的解释。

只需使用PhotoCamera课程,不要忘记在应用清单中启用相机使用