2014-11-24 14 views
14

Attualmente sto creando un'app mobile che utilizza lo Phonegap (Cordova) camera plugin. Cattura correttamente l'immagine e la mostra dove voglio, ma non riesco a impostare le opzioni targetWidth e targetHeight, come descritto.Imposta telecamera grandangolare e altezza telecamera telefonica

targetWidth: larghezza in pixel per ridimensionare l'immagine. Deve essere utilizzato con targetHeight. Il rapporto aspetto rimane costante. (Numero)

targetAltezza: altezza in pixel per ridimensionare l'immagine. Deve essere utilizzato con targetWidth. Il rapporto aspetto rimane costante. (Numero)

Come ho capito, questo cambierà la larghezza e l'altezza dell'immagine in uscita. Loro, tuttavia, non sembrano lavorare.

Un suggerimento che ho trovato durante la ricerca di una soluzione, ha detto di utilizzare il parametro opzionale allowEdit. In questo ho potuto chiedere all'utente di selezionare un'immagine quadrettata preimpostata. Tuttavia, questo non sembra funzionare.

Vedere il mio codice di seguito per riferimento.

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

Nessuno dei tentativi riuscirono a quello che volevo; una larghezza e altezza fisse per l'immagine catturata.

Come posso impostare la larghezza e l'altezza dell'immagine su questa immagine?

risposta

0

Io uso successivo e funziona bene.

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

E 'anche possibile modificare il codice nativo plug secondo le esigenze proprie. Nel caso tu stia provando su Android. ecco la soluzione.

All'interno eseguire funzione, entrambi i parametri vengono impostati per default come zero che significa piena catturata dal dispositivo, altrimenti se alcuni valori sono prese args parametri queste vengono presi in considerazione.

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); 

vedi: https://github.com/apache/cordova-plugin-camera/blob/master/src/android/CameraLauncher.java#L115

Se possibile è possibile impostare come bene nel codice nativo e funziona bene.

3

Prova questo mio amico. rimuovere 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 
     }); 
    }