web-dev-qa-db-ja.com

android)でphonegapを使用している間、ギャラリーから取得した画像は異なる方向で表示されます

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

上記のコードを使用して写真を撮ります。カメラディスプレイから正しい向きで撮影されたポートレート画像。問題は、ギャラリーから撮影されたポートレート画像でのみ発生します。この問題を解決する方法はありますか?

21
Linson

パラメータ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 });
15
Linson

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

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

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

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

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

PNGの向きのサポートをAndroid(#45を閉じる)に追加します

1
Liad Livnat

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

このフォーラム投稿のコメント投稿者の1人は、メモリが不足しているためだと述べています。 http://forum.ionicframework.com/t/camera-wrong-orientation-with-Android/858

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

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

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

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

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

0
Tom Kincaid

任意のデバイスに対してallowEdit:trueおよびcorrectOrientation: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
});
0
Amir john

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

0
jagadeesh