Problema de rotation de la image PhoneGap después de la transformación

Estamos desarrollando una aplicación PhoneGap que, entre las características principales que se están desarrollando, también count con una sección de perfil de usuario. Dentro de esa pantalla / sección, le permitimos al usuario actualizar varios detalles, incluida su image de perfil. La image de perfil puede tomarse con la camera (que funciona perfectamente) o elegirse de la biblioteca de fotos de los usuarios. Aquí es donde radica nuestro problema.

Estamos cargando una foto de la camera de los usuarios o del carrete de la camera utilizando la function navigator.camera.getPicture .

Luego creamos una nueva Image() y establecemos la imageURI devuelta por la brecha del teléfono como la image de src . En la function de onload de la image, dibujamos la image en un context de canvas para networkingimensionarla y recortarla en un cuadrado.

Tuvimos un problema con la image, donde al procesar la image se aplastó, pero hemos solucionado ese problema con la ayuda de esta publicación ( HTML5 Canvas drawImage ratio bug iOS )

El problema: todo funciona bien cuando obtenemos la image directamente de la camera, pero cuando establecemos destinationType en navigator.camera.PictureSourceType.SAVEDPHOTOALBUM o navigator.camera.PictureSourceType.PHOTOLIBRARY la image sale rotada incorrectamente.

correctOrientation está establecido en verdadero.

Estamos usando Cordova 2.8

Solo podemos get datos de imágenes cuando designationType es FILE_URI para CAMERA y NATIVE_URI para PHOTOLIBRARY . ¿Podría esta diferencia tener algo que ver con nuestro problema?

El código es:

 navigator.camera.getPicture(function (imageURI) { context = // 2d context from canvas object in the DOM base_image = new Image(); base_image.onload = function () { var x = 0; var y = 0; var w = 144; var h = 144; ... // some size and offset calculations var ratio = ... // calculate a ratio based off this question https://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios context.drawImage(base_image, x, y, base_image.width, base_image.height, 0, 0, w, h/ratio); url = context.canvas.toDataURL().toString(); DOMImage.src = url } base_image.src = imageURI; }, function (error) { enyo.log("Error " + error); }, { quality : 49, targetWidth: 114, targetHeight: 114, sourceType: sourceType, encodingType: Camera.EncodingType.JPEG, destinationType: destinationType, correctOrientation: true, saveToPhotoAlbum: false }); 

Cualquier consejo es muy apreciado.

La orientación de la image se almacena en datos EXIF. Aquí puedes encontrar la solución a tu problema.