2014-05-17 4 views
4

MediaCapture class을 사용하여 Windows Phone 8.1 런타임에서 사진을 찍습니다. 내가 사진을 찍을 코드는 다음과 같습니다줄무늬가있는 캡처 된 사진

// 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

나는이 문제에 대한 해결책을 찾으려고 노력하고 있지만 성공하지는 못했다. 내가 놓친 게 있니?

편집 - 사진에서 가져 오는 사진은 줄무늬가 없으므로 하드웨어에 문제가없는 것으로 보입니다.

+0

안녕하세요, Romasz. 창 전화에 대한 광대 한 지식을 얻었습니다. 내 응용 프로그램에 갇혀있어. 문제는, 프로필을 작성하기 위해 fileopenpicker를 사용하여 파일을 가져 와서 해당 선택 이미지를 바이트로 변환하고 SQLite 데이터베이스에 해당 바이트를 저장하는 것입니다 ... 모든 프로파일의 데이터를 가져 오면 사용할 수 없습니다. 내 이미지 바이트를 목록의 이미지로 변환합니다. http://stackoverflow.com/questions/32748330/listbox-image-control-binding-with-sqlite-image-bytes-are-stored-in-database-c – Arsal

답변

7

좋아요. 알아 두었습니다. 해상도가일 때 기본값으로 설정된 문제입니다. 나는 그것이 같은 줄무늬를 얻는 가장 낮은 해상도로 시도

// 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); 
+4

내 케이스에 'NullReferenceException'이 생성됩니다. 반환 된 IEnumerable에는 캐스팅에서 null을 반환하는 두 개의 'PhotoEncodingProperties'가 포함되어 있습니다. 이것은 나를 위해 작동합니다 :'var maxResolution = takePhotoManager.VideoDeviceController.GetAvailableMediaStreamProperties (MediaStreamType.Photo) .Aggregate ( (i1, i2) => (i1은 VideoEncodingProperties입니까? i1은 VideoEncodingProperties) .Width : 0)> (i2는 VideoEncodingProperties (VideoEncodingProperties로 i2) .Width : 0)? i1 : i2); ' –

+0

@CedricReichenbach 그런 문제가 발생하지는 않았지만 솔직히 말해서 한 장치에서 이것을 테스트했습니다. 암호. 최대 너비는 최대 해상도를 의미하지 않을 수도 있으므로 사례에 따라 최상의 해상도를 선택하는 데 다른 방법을 사용할 수 있습니다. – Romasz

+1

감사! 이것은 나를 위해 일했지만, MediaStreamType.Photo와 MediaStreamType.VideoPreview 둘 다 설정해야했습니다! –

0

: 당신은 그냥 MediaCapture 초기화 후 최대 해상도를 설정 한 경우에는 줄무늬가 없을 것입니다. MS Advance Camera 샘플에서 미리보기에는 MediaCapture를 사용하지만 캡처에는 SilverLight API를 사용합니다!

CapturePhotoToXXX API를 호출 할 때마다 MediaCapture에서 메모리 누수 문제가 발생합니다.

MediaCapture가 WindowsPhone 8.1에서 잘못 관리된다는 사실을 이미 알고 있었는지 궁금해합니다. 그렇기 때문에 Camera MediaCapture 샘플에 RT API를 제공하지 않는 것입니다.

관련 문제