【发布时间】:2015-02-03 14:37:43
【问题描述】:
我正在使用 MediaCapture 捕捉照片并存储它们。它在模拟器中工作。但在真机(诺基亚 Lumia 530)上运行该应用程序时,拍摄的照片只是黑色。它们具有正确的大小并且文件具有一定的字节长度,但是在显示照片时它是黑色的。请注意,我不使用 Silverlight,而是使用 MediaCapture。使用默认相机应用程序时,手机上的相机可以工作。该应用的清单包括“图片库”和“网络摄像头”功能。
有人知道哪里出了问题吗?
这是我使用的测试代码:
using (var mediaCapture = new MediaCapture())
{
await mediaCapture.InitializeAsync();
ImageEncodingProperties imageFormat = ImageEncodingProperties.CreateJpeg();
StorageFile photoFile = await KnownFolders.PicturesLibrary.CreateFileAsync("TestPhoto.jpg", CreationCollisionOption.GenerateUniqueName);
await mediaCapture.CapturePhotoToStorageFileAsync(imageFormat, photoFile);
BitmapImage bitmap = new BitmapImage();
using (var photoStream = await photoFile.OpenReadAsync())
{
bitmap.SetSource(photoStream);
}
}
编辑
我找到了解决方案。如果我们有一个 CaptureElement,则正确捕获照片,将其源设置为 MediaCapture 对象,在拍照前调用 MediaCapture.StartPreviewAsync,拍摄照片(使用 CapturePhotoToStorageFileAsync),最后调用 StopPreviewAsync。似乎 MediaCapture 需要一个现有的(和显示的)预览才能捕捉照片。奇怪的是,这没有记录在案,并且在没有预览的情况下使用 CapturePhotoToStorageFileAsync 不会引发异常。
【问题讨论】:
-
手机连接电脑,或者复制文件到图片库时,是不是也黑了?您在拍摄照片之前检查过预览吗?
-
我检查过了。图片库中的文件也是黑色的。在此期间,我找到了解决方案。查看我的编辑。
-
您可以将其作为答案发布,而不是将答案放入问题中。它可能会帮助其他一些人。
-
是的。如果有其他人在回答,我想等待。
标签: windows-phone windows-phone-8.1