Изображение, взятое из галереи, отображается в различной ориентации при использовании 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 });
Я использую вышеуказанный код, чтобы сделать снимок.
Изображения с портретом, взятые с камерных дисплеев в правильной ориентации, проблема возникает только для портретных изображений, взятых из галереи. Есть ли способ решить эту проблему?
Ответы
Ответ 1
Он просто решил мою проблему, добавив параметр 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 });
Ответ 2
Он просто решил мою проблему, добавив параметр correctOrientation. Теперь код выглядит так:
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
destinationType: destinationType.FILE_URI,
correctOrientation: true,
sourceType: source });
}
Ответ 3
У меня была проблема с моим 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;
}
Ответ 4
Новое обновление для плагина cordova, которое решает эти проблемы.
cordova plugin rm org.apache.cordova.camera
cordova plugin add https://github.com/apache/cordova-plugin-camera
просто переустановите плагин, вот исправления, которые они опубликовали:
Добавить поддержку ориентации для PNG на Android (закрывается # 45)
Ответ 5
correctOrientation: true, добавьте эту работу для меня
Ответ 6
Установите 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
});
Ответ 7
Это, по-видимому, проблема с устройством. Например, со следующим кодом:
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, поскольку отредактированная фотография возвращается в правильной ориентации.