Подтвердить что ты не робот

Изображение, взятое из галереи, отображается в различной ориентации при использовании 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 });

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

4b9b3361

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