在android中使用phonegap时,来自gallery的图像以不同的方向显示

我正在使用Sencha Touch和Phonegap来显示用相机拍摄的照片。 通过cordova2.7.0在iphone上拍照时,图像以正确的方向绘制。 但是使用三星s3,图片将倾斜-90°(仅适用于肖像图像)。

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

我用上面的代码拍照。 肖像图像以正确的方向从相机显示器拍摄,问题仅发生在从图库中拍摄的肖像图像。 有没有办法解决这个问题?

Related of "在android中使用phonegap时,来自gallery的图像以不同的方向显示"

它只是通过添加参数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 }); } 

我的三星Galaxy S5也出现了这个问题,但是将编码types从PNG切换为JPEG(与targetWidth结合使用),现在它具有正确的方向。

该论坛post中的一位评论者提到它是由于内存不足。 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添加对PNG的定位支持(关闭#45)

correctOrientation:true,为我添加它的工作

为所有设备设置allowEdit:truecorrectOrientation: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并正确定位返回的图像,但它不适用于三星标签A并且图像方向未得到纠正。

我唯一的解决方法是将allowEdit设置为true,因为编辑的照片以正确的方向返回。