0

2 일 동안 Lumia 930 Windows Phone으로 사진을 캡처하려고합니다. 내가
_captureInitSettings.PhotoCaptureSource = Windows.Media.Capture.PhotoCaptureSource.VideoPreview;Windows Phone 8.1 사진 캡처가 작동하지 않습니다.

내가 사진을 얻을 선택하면

http://1drv.ms/1nFWoCF

:하지만, 당신은 여기에 해결책을 찾을 수

public sealed partial class MainPage : Page 
{ 
    Windows.Media.Capture.MediaCapture captureManager; 

    public MainPage() 
    { 
     this.InitializeComponent(); 
     First.Click += async (sender, e) => await Initialize(); 
     Second.Click += async (sender, e) => await shutter(); 
    } 

    private async Task Initialize() 
    { 
     captureManager = new MediaCapture(); 

     var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(Windows.Devices.Enumeration.DeviceClass.VideoCapture); 

     List<Windows.Devices.Enumeration.DeviceInformation> _deviceList = new List<Windows.Devices.Enumeration.DeviceInformation>(); 
     for (var i = 0; i < devices.Count; i++) 
     { 
      _deviceList.Add(devices[i]); 
     } 

     MediaCaptureInitializationSettings _captureInitSettings = null; 
     _captureInitSettings = new Windows.Media.Capture.MediaCaptureInitializationSettings(); 
     _captureInitSettings.AudioDeviceId = ""; 
     _captureInitSettings.VideoDeviceId = ""; 
     _captureInitSettings.StreamingCaptureMode = Windows.Media.Capture.StreamingCaptureMode.AudioAndVideo; 
     _captureInitSettings.PhotoCaptureSource = Windows.Media.Capture.PhotoCaptureSource.Photo; 

     if (_deviceList.Count > 0) 
      _captureInitSettings.VideoDeviceId = _deviceList[0].Id; 

     await captureManager.InitializeAsync(_captureInitSettings); 
     //capturePreview.Source = captureManager; 
     //await captureManager.StartPreviewAsync(); 
     await SetResolution(); 
    } 

    public async Task SetResolution() 
    { 
     System.Collections.Generic.IReadOnlyList<IMediaEncodingProperties> res; 
     res = this.captureManager.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo); 
     uint maxResolution = 0; 
     int indexMaxResolution = 0; 
     string s = ""; 

     if (res.Count >= 1) 
     { 
      for (int i = 0; i < res.Count; i++) 
      { 
       VideoEncodingProperties vp = (VideoEncodingProperties)res[i]; 
       var frameRate = (vp.FrameRate.Numerator/vp.FrameRate.Denominator); 


       s = i + ") " + vp.Subtype + ", "; 
       s = s + vp.Width; 
       s = s + " x " + vp.Height; 
       s = s + " , Frame/s: " + frameRate; 

       if (vp.Width > maxResolution && vp.Subtype.Equals("YUY2")) 
       { 
        indexMaxResolution = i; 
        maxResolution = vp.Width; 

       } 
       if (true) 
       { 
        Debug.WriteLine(s); 
       } 
       s = ""; 
      } 

      //setting resolution 
      await captureManager.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, res[indexMaxResolution]); 

      return; 

     } 
    } 

    private async Task shutter() 
    { 
     ImageEncodingProperties imageProperties = ImageEncodingProperties.CreateJpeg(); 
     var photoStorageFile = await Windows.Storage.KnownFolders.PicturesLibrary.CreateFileAsync("Photo.JPG", Windows.Storage.CreationCollisionOption.GenerateUniqueName); 
     await captureManager.CapturePhotoToStorageFileAsync(imageProperties, photoStorageFile); 

     return; 
    } 

} 

:

나는 다음과 같은 코드를 사용하고 매우 진절머리 나는 해상도/품질. 사진을 사용할 때 훨씬 더 합리적인 것이 무엇인지, 2MB 파일을 얻었습니다.이 파일은 꽤 괜찮은 것 같지만 내용은 검은 색이고 노란색 선은 lense가 닫힌 것처럼 보입니다.

카메라가 Nokia 카메라 또는 기타 응용 프로그램과 호환되므로 하드웨어 문제 일 수 없습니다.

+0

msdn 샘플을 검토 했습니까? http://msdn.microsoft.com/en-us/library/windows/apps/dn376408.aspx – Kulasangar

+0

안녕하세요, CameraUI를 사용하고 싶지 않으므로 "CameraCaptureUI 컨트롤을 사용할 수 없습니다. Windows Phone 8.1 장치 "를 참조하십시오. 마이크로 소프트가 스틸 사진을 찍는 방법, 비디오만을 가져 오는 방법을 하나의 예제로 제공하지 않는다는 사실이 나를 미치게합니다! – netik

답변

1

작업에 적합한 API를 선택했다고 생각하지 않습니다.

CameraCaptureTask (표준 카메라 UI + 라이브러리에 저장된 이미지를 사용하려는 경우) 또는 PhotoCamera (자신의 카메라 UI를 원하거나 원하지 않는 경우)을 사용해야합니다. 사용자의 라이브러리에 저장할 사진).

그리고 매니페스트의 ID_CAP_ISV_CAMERA 기능을 잊지 마세요.

+0

안녕하세요, 감사합니다. 죄송합니다. 더 명확하게 작성해야합니다. 8.0이 아닌 8.1 용으로 개발하고 싶습니다. CameraCaptureTask는 8.1에서 더 이상 존재하지 않으며 MediaCapture API로 대체되었습니다. – netik

+1

첫 번째 줄의 내용은 다음과 같습니다. Windows Phone Silverlight 8.1 – Soonts

+0

흠.하지만 Silverlight가 죽어서 더 이상 사용하지 않으려합니다. 따라서 일반 Windows Phone 8.1 앱이어야합니다. – netik

0

이제 미리보기를 시작하여 그림을 찍을 수있었습니다. 미리보기 없이는 작동하지 않는 것 같습니다./

관련 문제