捕获的条纹照片

时间:2014-05-17 09:06:45

标签: c# windows-runtime windows-phone-8.1

我正在使用MediaCapture class在Windows Phone 8.1 Runtime上拍照。我拍照的代码看起来像这样:

// create a file
StorageFile photoFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("myFirstPhoto.jpg", CreationCollisionOption.ReplaceExisting);

// take a photo with choosen Encoding
await captureManager.CapturePhotoToStorageFileAsync(ImageEncodingProperties.CreateJpeg(), photoFile);

代码工作得很好,因为我得到了一张照片,但左右两侧有奇怪的条纹:

enter image description here

我正在尝试找到解决此问题的方法,但没有成功。我错过了什么吗?

编辑 - 内置应用程序拍摄的照片没有条纹,所以这似乎不是硬件的问题。

2 个答案:

答案 0 :(得分:7)

好的,我自己已经弄明白了 - 这是使用MediaCapture时设置为默认值的分辨率问题。如果您在初始化MediaCapture之后设置了最大分辨率,那么就没有条纹:

// just after initialization
var maxResolution = captureManager.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo).Aggregate(
                    (i1, i2) => (i1 as VideoEncodingProperties).Width > (i2 as VideoEncodingProperties).Width ? i1 : i2);
await captureManager.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, maxResolution);

答案 1 :(得分:0)

我尝试使用最低分辨率获得相同的条纹。 从MS Advance Camera样本中,他们使用MediaCapture进行预览,但使用SilverLight API进行捕获!

每次调用CapturePhotoToXXX API时,MediaCapture都会出现内存泄漏问题。

我想知道他们是否已经知道MediaCapture在WindowsPhone 8.1上管理不当,这就是为什么他们不提供带有RT API的Camera MediaCapture样本的原因。