21

Sencha Touch と Phonegap を使用して、カメラで記録した写真を表示しています。cordova2.7.0 経由で iphone で写真を撮ると、写真は正しい向きで描画されます。ただし、samsung s3 を使用すると、写真は -90° 傾きます (ポートレート画像のみ)。

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

上記のコードを使用して写真を撮ります。カメラから取得した縦向きの画像は、正しい向きで表示されます。問題は、ギャラリーから取得した縦向きの画像でのみ発生します。この問題を解決する方法はありますか?

4

7 に答える 7

15

パラメータ encodingType を追加することで、私の問題を解決しました。コードは次のようになります

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 });
于 2013-12-12T07:39:27.560 に答える
1

Samsung Galaxy S5でもこの問題が発生していましたが、encodingTypeをPNGからJPEGに(targetWidthと組み合わせて)切り替えたところ、正しい向きになりました。

このフォーラムの投稿に対するコメント投稿者の 1 人は、メモリ不足が原因であると述べました。 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;
}
于 2014-11-22T21:06:14.740 に答える
1

この問題を解決する cordova プラグインの新しいアップデート。

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

プラグインを再インストールするだけです。公開された修正は次のとおりです。

Android に PNG の方向サポートを追加 (#45 を閉じる)

于 2015-12-23T23:08:10.393 に答える
0

これはデバイス固有の問題のようです。たとえば、次のコードを使用します。

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

これは Nexus 5 では機能し、返された画像の向きを正しく設定しますが、Samsung Tab A では機能せず、画像の向きが修正されません。

私の唯一の回避策は、編集された写真が適切な向きで返されるため、allowEdit を true に設定することです。

于 2017-01-03T19:35:38.843 に答える
0

correctOrientation: true、これを追加してください

于 2016-05-13T10:35:48.660 に答える
0

allowEdit : truecorrectOrientation : trueを任意のデバイスに設定します。

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
});
于 2016-08-15T11:33:01.077 に答える