web-dev-qa-db-fra.com

Définir la largeur et la hauteur de la caméra

Je suis actuellement en train de créer une application mobile qui utilise le plugin de caméra Phonegap (Cordova) . Il capture correctement l'image et l'affiche à l'endroit souhaité, mais je n'arrive pas à définir les options targetWidth et targetHeight, comme indiqué.

targetWidth: Largeur en pixels pour redimensionner l'image. Doit être utilisé avec TargetHeight. Le rapport d'aspect reste constant. (Nombre)

targetHeight: Hauteur en pixels pour redimensionner l'image. Doit être utilisé avec TargetWidth. Le rapport d'aspect reste constant. (Nombre)

Si j'ai bien compris, cela modifiera la largeur et la hauteur de l'image en sortie. Cependant, ils ne semblent pas fonctionner. 

Une suggestion que j’ai trouvée lors de la recherche d’une solution consistait à utiliser le paramètre facultatif allowEdit. En cela, je pourrais demander à l'utilisateur de sélectionner une image au carré prédéfinie. Cela ne semble cependant pas fonctionner non plus.

Voir mon code ci-dessous pour référence.

camera: function() {
    //Fire up the camera!
    navigator.camera.getPicture(onSuccess, onFail, {
        destinationType: Camera.DestinationType.DATA_URL,
        allowEdit: true,
        targetWidth: 512,
        targetHeight: 512
    });
},

Aucune des tentatives n'a réussi dans ce que je voulais; une largeur et une hauteur fixes pour l'image capturée.

Comment définir la largeur et la hauteur de l'image sur cette image?

14
Matthijs

Essayez celui-ci mon ami. supprimer allowEdit : true

camera: function() {
        navigator.camera.getPicture(onSuccess, onFail, {
            quality: 50,
            targetWidth: 512,
            targetHeight: 512,
            destinationType: navigator.camera.DestinationType. DATA_URL,
            saveToPhotoAlbum: true,
            correctOrientation: true
        });
    }
3
Mohammad Nurdin

Pourquoi ne pas changer d’idée en redimensionnant une image après sa capture?

Article utile pour redimensionner une image avec HTML5 Canvas

1
Jack He

J'utilise la suite et ça marche bien.

{
   quality: 25,
   targetWidth: 500,
   targetHeight: 500,
   destinationType: Camera.DestinationType.FILE_URI,
   sourceType: Camera.PictureSourceType.CAMERA,
   correctOrientation: true
}

Il est également possible de modifier le code natif du pluginselon ses propres besoins. Au cas où vous essayez sur Android. voici la solution.

Dans execute function, les deux paramètres sont définis par défaut à zéro, ce qui signifie une taille complète capturée par le périphérique. Sinon, si certaines valeurs sont transmises par les paramètres args , elles sont prises en compte.

    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

            this.callbackContext = callbackContext;

     if (action.equals("takePicture")) {
                int srcType = CAMERA;
                int destType = FILE_URI;
                this.saveToPhotoAlbum = false;
                this.targetHeight = 0;
                this.targetWidth = 0;
                this.encodingType = JPEG;
                this.mediaType = PICTURE;
                this.mQuality = 80;

                this.mQuality = args.getInt(0);
                destType = args.getInt(1);
                srcType = args.getInt(2);
                this.targetWidth = args.getInt(3);
                this.targetHeight = args.getInt(4);
                this.encodingType = args.getInt(5);
                this.mediaType = args.getInt(6);
                this.allowEdit = args.getBoolean(7);
                this.correctOrientation = args.getBoolean(8);
                this.saveToPhotoAlbum = args.getBoolean(9);

voir: https://github.com/Apache/cordova-plugin-camera/blob/master/src/Android/CameraLauncher.Java#L115

Si possible, vous pouvez également le définir dans le code natif et cela fonctionne bien.

0
AAhad