2013-07-19 5 views
18

Ich benutze Sencha Touch und Phonegap, um ein Bild mit der Kamera aufgenommen anzuzeigen. Wenn Sie ein Bild auf einem Iphone über cordova2.7.0 aufnehmen, wird das Bild mit der korrekten Ausrichtung gezeichnet. Bei Verwendung von Samsung s3 wird das Bild jedoch um -90 ° geneigt (nur für Porträtaufnahmen).Bild aus der Galerie wird in anderer Ausrichtung angezeigt, während phonegap in Android

navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 25, 
      destinationType: destinationType.FILE_URI, 
     targetWidth: 120, 
     targeHeight: 120, 
      correctOrientation: true, 
      sourceType: source }); 

Ich verwende den obigen Code, um ein Bild aufzunehmen. Die Portraitbilder wurden von den Kameradisplays in der richtigen Ausrichtung aufgenommen, das Problem tritt nur für die Portraitaufnahmen auf, die aus der Galerie genommen wurden. Gibt es eine Möglichkeit, dieses Problem zu lösen?

+0

Hallo, hast du das Problem gelöst? –

Antwort

14

Es löste einfach mein Problem durch Hinzufügen des Parameters encodingType. Jetzt sieht der Code wie

var encodingType = navigator.camera.encodingType.PNG; 
var destinationType = navigator.camera.DestinationType; 
var destinationType = navigator.camera.DestinationType; 
var source = navigator.camera.PictureSourceType; 
navigator.camera.getPicture(onPhotoURISuccess, onFail, { 
    quality: 50, 
    destinationType: destinationType.FILE_URI, 
    encodingType: encodingType.PNG, 
    targetWidth: 120, 
    targeHeight: 120, 
    correctOrientation: true, 
    sourceType: source }); 
+0

Es funktioniert nicht in Samsung Edge S6. –

+0

können Sie bitte etwas zu Ihrem Problem erklären. – Linson

+0

Die Bildausrichtung wird von Bildern geändert, die von der Samsung Edge S6, A5 Kamera aufgenommen wurden (standardmäßig wird kein cordova Plugin verwendet). Es funktioniert gut für Screenshot und Bild von der Kamera (mit Cordova Plugin). –

1

ich dieses Problem mit meinem Samsung Galaxy S5 wurde als gut, wechselte aber EncodingType von PNG zu JPEG (in Kombination mit einer target) und jetzt hat es auf die richtige Ausrichtung.

Einer der Kommentatoren in diesem Forum post erwähnt, dass es wegen Speichermangel ist. http://forum.ionicframework.com/t/camera-wrong-orientation-with-android/8583

try { 
    bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); 
    this.orientationCorrected = true; 
} catch (OutOfMemoryError oom) { 
    this.orientationCorrected = false; 
} 
4

Es löste einfach mein Problem, indem die Parameter correctOrientation hinzufügen. Jetzt sieht der Code wie folgt aus:

navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
destinationType: destinationType.FILE_URI, 
correctOrientation: true, 
sourceType: source }); 
} 
1

Neues Update für Cordova-Plugin, das diese Probleme löst.

cordova plugin rm org.apache.cordova.camera 
cordova plugin add https://github.com/apache/cordova-plugin-camera 

nur das Plugin neu installieren, ist hier die Updates sie veröffentlicht:

Orientierung Unterstützung hinzufügen für PNG Android (schließt # 45)

0

correctOrientation: true, fügen Sie diese ihre für mich arbeiten

+0

Dies sollte ein Kommentar sein. –

0

Set AllowEdit: true und correctOrientation: true für jedes Gerät.

navigator.camera.getPicture(onSuccess, onFail, { 
quality: 60, 
destinationType: Camera.DestinationType.DATA_URL, 
allowEdit: true, 
correctOrientatin: true, 
encodingType: Camera.EncodingType.JPEG, 
sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
targetWidth: 3000 
}); 
0

Dies scheint ein gerätespezifisches Problem zu sein. Zum Beispiel mit dem folgenden Code:

var options = { 
    quality: 50, 
    correctOrientation: true, 
    allowEdit: false, 
    destinationType: Camera.DestinationType.FILE_URI, 
    sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
    mediaType: Camera.MediaType.PICTURE, 
    encodingType: Camera.EncodingType.JPEG 
}; 
navigator.camera.getPicture(success,failure,options); 

Dies funktioniert auf einem Nexus 5 und richtet das Bild wieder richtig, aber es funktioniert nicht auf einem Samsung Tab A und die Bildausrichtung nicht korrigiert.

Meine einzige Problemumgehung besteht darin, allowEdit auf True zu setzen, da das bearbeitete Foto in der richtigen Ausrichtung zurückgegeben wird.

Verwandte Themen