2014-11-24 4 views
14

Ich bin gerade dabei, eine mobile App zu erstellen, die Phonegap (Cordova) camera plugin verwendet. Es nimmt das Bild korrekt auf und zeigt es an, wo ich es möchte, aber ich kann anscheinend nicht die Optionen targetWidth und targetHeight wie beschrieben einstellen.Stellen Sie die Kamera Breite und Höhe Phonegap Kamera

targetWidth: Breite in Pixel, um das Bild zu skalieren. Muss mit targetHeight verwendet werden. Das Seitenverhältnis bleibt konstant. (Nummer)

targetHeight: Höhe in Pixel, um das Bild zu skalieren. Muss mit targetWidth verwendet werden. Das Seitenverhältnis bleibt konstant. (Nummer)

Wie ich verstehe, wird dies die Bildbreite und -höhe bei der Ausgabe ändern. Sie scheinen jedoch nicht zu arbeiten.

Ein Vorschlag, den ich bei der Suche nach einer Lösung gefunden habe, sagte, den optionalen Parameter allowEdit zu verwenden. Damit könnte ich den Benutzer dazu bringen, ein voreingestelltes Quadratbild auszuwählen. Dies scheint jedoch auch nicht zu funktionieren.

Siehe meinen Code unten als Referenz.

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

Keines der attemps gelang es, was ich wollte; eine feste Breite und Höhe für das aufgenommene Bild.

Wie kann ich die Bildbreite und -höhe in diesem Bild einstellen?

Antwort

0

Ich benutze folgende und es funktioniert gut.

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

Es ist auch möglich, den Plugin nativen Code nach eigenen Bedürfnissen zu ändern. Für den Fall, dass Sie auf Android versuchen. Hier ist die Lösung.

Innen Funktion ausführen, werden beide Parameter standardmäßig als Null gesetzt, der eine in voller Größe durch die Vorrichtung erfasst bedeutet, andernfalls, wenn einige Werte von args Parameter übergeben werden, dann werden diese berücksichtigt.

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

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

Wenn möglich Sie es auch in den nativen Code einstellen und funktioniert einwandfrei.

3

Versuchen Sie diese eine meiner Freunde. entfernen 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 
     }); 
    }