Изображение, взятое из галереи, отображается в различной ориентации при использовании phonegap в android

Я использую Sencha Touch и Phonegap для отображения изображения, записанного с помощью камеры. При съемке на iphone через cordova2.7.0 изображение рисуется с правильной ориентацией. Но, используя samsung s3, изображение будет зависеть на -90 ° (только для портретных изображений).

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

Я использую приведенный выше код, чтобы сделать снимок. Изображения с портретом отобразились с камерных дисплеев в правильной ориентации, проблема возникает только для портретных изображений, взятых из галереи. Есть ли способ решить эту проблему?

Он просто решил мою проблему, добавив параметр 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 }); 

Он просто решил мою проблему, добавив параметр correctOrientation. Теперь код выглядит так:

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

У меня была проблема с моим Samsung Galaxy S5, но он переключил encodingType из PNG в JPEG (в сочетании с targetWidth), и теперь он имеет правильную ориентацию.

Один из комментаторов на этом форуме сказал, что это из-за нехватки памяти. 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; } 

Новое обновление для плагина cordova, которое решает эти проблемы.

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

Просто переустановите плагин, вот исправления, которые они опубликовали:

Добавить поддержку ориентации для PNG на Android (закрывается # 45)

CorrectOrientation: true, добавьте эту работу для меня

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

Это, по-видимому, проблема устройства. Например, со следующим кодом:

 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 A, и ориентация изображения не корректируется.

Моим единственным обходным решением является установка allowEdit в true, поскольку отредактированная фотография возвращается в правильной ориентации.