Я использую 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, поскольку отредактированная фотография возвращается в правильной ориентации.