21

我正在使用 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 });

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

4

7 回答 7

15

它通过添加参数 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 });
于 2013-12-12T07:39:27.560 回答
5

它通过添加参数正确的方向简单地解决了我的问题。现在代码看起来像:

navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
destinationType: destinationType.FILE_URI,
correctOrientation: true,
sourceType: source });
}
于 2015-10-28T10:13:44.647 回答
1

我的三星 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;
}
于 2014-11-22T21:06:14.740 回答
1

解决此问题的 cordova 插件的新更新。

cordova plugin rm org.apache.cordova.camera
cordova plugin add https://github.com/apache/cordova-plugin-camera

只需重新安装插件,这是他们发布的修复:

向 Android 添加对 PNG 的方向支持(关闭 #45)

于 2015-12-23T23:08:10.393 回答
0

正确的方向:是的,添加它对我的工作

于 2016-05-13T10:35:48.660 回答
0

为任何设备设置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
});
于 2016-08-15T11:33:01.077 回答
0

这似乎是特定于设备的问题。例如,使用以下代码:

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 并正确定位返回的图像,但它不适用于三星 Tab A 并且图像方向未更正。

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

于 2017-01-03T19:35:38.843 回答