locked
Besoin de precision sur le comportement de PhotoCaptureDevice.SetCaptureResolutionAsync. RRS feed

  • Question

  • Bonjour, 

    j'utilise la classe PhotoCaptureDevice pour afficher l'aperçu de la camera en "live" et prendre un photo.

    J'initialise la camera avec un résolution de 640x480 pour la preview, et j'utilise un résolution plus importante pour la capture ( par exemple 3264x2448)

    je précise que la résolution de preview et celle de capture ont un ratio identique, dans le cas présent 4:3.

    pour faire bref la camera est initialisée de cette façon:

    var resolution_preview = new Size (640,480);
    var resolution_capture = new Size (3264,2448);
    
    Camera = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Back);
    await Camera.SetPreviewResolutionAsync(resolution_preview);
    await Camera.SetCaptureResolutionAsync(resolution_capture );

    après avoir défini la résolution de capture ( SetCaptureResolutionAsync ) la résolution de preview est modifiée à 3440x1080. De même si je fixe un résolution de capture a 640x480 la camera se retrouve avec une résolution de preview de 1440.

    Pourquoi la résolution de preview est elle modifier en même temps que la résolution de capture?

    si je modifie la résolution de preview après celle de capture ( en respectant le ratio je précise) l'appli plante.

    est il possible de maintenir la résolution de preview la plus basse possible ( en rapport avec les résolution supportés par le smartphone)

    Merci par avance.



    lundi 29 septembre 2014 11:45

Toutes les réponses

  • Bonjour,

    J'ai une autre approche lorsque je capture une photo et ça peut éventuellement t'aider, à toi de voir :
    Lorsque j'initialise le'"appareil photo", je récupère les dimensions possible de prises de vue :

    var supportedResolutions = PhotoCaptureDevice.GetAvailableCaptureResolutions(sensorLocation).ToArray();
    Je fais un choix (soit par un paramètre que l'utilisateur choisi soit je le force) sur l'array "supportedResolutions"

    ensuite, ca reste classique :

    _dataContext.Device = await PhotoCaptureDevice.OpenAsync(sensorLocation, supportedResolutions[i]);
    j'utilise ensuite "

    _dataContext.Device.CreateCaptureSequence

    " lorsque je prends la capture etc..

    Si ça peut te donner des pistes...


    Christophe Peugnet
    http://www.peug.net
    sodeasoft.com


    mercredi 1 octobre 2014 10:18
  • Bonjour, 

    merci pour les précisions, j'ai simplifié le problème mais j'utilise un approche identique.

    Je récupère les résolutions supportées pour la preview et la capture, la résolution de capture est paramétrable via l'UI de l'appli.

    Pour des raison de performance pour la preview j'ai besoin d'utiliser la résolution la plus basse supporter par le device.

    si j'effectue :

    await Camera.SetPreviewResolutionAsync(resolution_preview);
    await Camera.SetCaptureResolutionAsync(resolution_capture );

    la résolution de capture est correcte, mais celle de preview devient la plus grosse supportée.

    si j'inverce: 

    await Camera.SetCaptureResolutionAsync(resolution_capture );
    await Camera.SetPreviewResolutionAsync(resolution_preview);

    l'appli plante.

    mercredi 1 octobre 2014 14:17