在适用于 Windows Phone 的 Windows Store 应用程序上捕获照片 [英] Photo capture on Windows Store App for Windows Phone
问题描述
嗯,我的问题很简单:
如何使用适用于 Windows Phone 8.1
的 Windows Store App
使用相机拍摄图片?
MSDN 上的示例使用 Windows.Media.Capture.CameraCaptureUI
,它在 Windows Phone 上不可用,或者用于 Silverlight
.
我找不到任何专门针对使用 Windows 运行时的 Windows Phone 应用程序的文档或示例.
如果有人知道,或者甚至有这方面的文档,我会很高兴.
Well, my question is simple:
How do I capture pictures with a Windows Store App
for Windows Phone 8.1
, using the camera?
The samples on MSDN use Windows.Media.Capture.CameraCaptureUI
, which is not usable on Windows Phone, or are for Silverlight
.
I can't find any doc or sample specifically for Windows Phone app using Windows Runtime.
If someone knows, or even have the doc for this, I would be glad.
推荐答案
在 WP8.1 运行时(也在 Silverlight 中)您可以使用 MediaCapture.简而言之:
In WP8.1 Runtime (also in Silverlight) you can use MediaCapture. In short:
// First you will need to initialize MediaCapture
Windows.Media.Capture.MediaCapture takePhotoManager = new Windows.Media.Capture.MediaCapture();
await takePhotoManager.InitializeAsync();
如果您需要预览,可以使用 捕获元素:
If you need a preview you can use a CaptureElement:
// In XAML:
<CaptureElement x:Name="PhotoPreview"/>
然后在后面的代码中你可以像这样开始/停止预览:
Then in the code behind you can start/stop previewing like this:
// start previewing
PhotoPreview.Source = takePhotoManager;
await takePhotoManager.StartPreviewAsync();
// to stop it
await takePhotoManager.StopPreviewAsync();
最后要拍一张照片,例如你可以直接把它放到一个文件 CapturePhotoToStorageFileAsync 或流CapturePhotoToStreamAsync:
Finally to take a Photo you can for example take it directly to a file CapturePhotoToStorageFileAsync or to a Stream 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);
如果您想捕获视频,请这里有更多信息.
If you want to capture video then here is more information.
另外不要忘记在清单文件的Capabilities
中添加Webcam
,在Requirements<中添加
Front/Rear Camera
/代码>.
Also don't forget to add Webcam
in Capabilities
of your manifest file, and Front/Rear Camera
in Requirements
.
如果您需要选择相机(前/后),您将需要获取相机 ID,然后使用所需设置初始化 MediaCapture
:
In case you need to choose a Camera (fornt/back), you will need to get the Camera Id and then initialize MediaCapture
with desired settings:
private static async Task<DeviceInformation> GetCameraID(Windows.Devices.Enumeration.Panel desired)
{
DeviceInformation deviceID = (await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture))
.FirstOrDefault(x => x.EnclosureLocation != null && x.EnclosureLocation.Panel == desired);
if (deviceID != null) return deviceID;
else throw new Exception(string.Format("Camera of type {0} doesn't exist.", desired));
}
async private void InitCamera_Click(object sender, RoutedEventArgs e)
{
var cameraID = await GetCameraID(Windows.Devices.Enumeration.Panel.Back);
captureManager = new MediaCapture();
await captureManager.InitializeAsync(new MediaCaptureInitializationSettings
{
StreamingCaptureMode = StreamingCaptureMode.Video,
PhotoCaptureSource = PhotoCaptureSource.Photo,
AudioDeviceId = string.Empty,
VideoDeviceId = cameraID.Id
});
}
这篇关于在适用于 Windows Phone 的 Windows Store 应用程序上捕获照片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!