不确定会导致这种情况,但是当我通过
FileTransfer()
将一些图像上传到我的远程服务器时,图像有时会显示为横向或颠倒.但是,当我在iPhone上本地查看图像时,它们以正确的方式定位.
例如,当我选择这样的图像上传时:http://sharefa.st/view/WBe2QNSK8r8z
结果如下:http://sharefa.st/view/EWdW1Z4G8r8z
我使用本地路径传输文件,所以我不明白为什么图像会“随机”旋转.
这是我的上传功能:
function uploadPhoto() { var options = new FileUploadOptions(); options.fileKey = 'file'; options.fileName = imgurI.substr(imgurI.lastIndexOf('/')+1); options.mimeType = 'image/jpeg'; var params = new Object(); if(logged_in == true) { params.unique_id = app_unique_id; params.secret_key = user_secret_key; } options.params = params; loadingStart(); var ft = new FileTransfer(); ft.upload(imgurI,'http://' + remote_server + '/API/upload',uploadDetails,fail,options); }
imgurI值看起来像这样:
file://localhost/var/mobile/Applications/<snip>/tmp/photo_015.jpg
任何见解都表示赞赏.
解决方法
感谢Humanoidism指出问题实际上是iPhone及其存储图像的方式,我能够找到解决方案.
要以正确的方向上传照片,必须将正确的方向设置添加到getPicture()中的options数组,并将其设置为true.
这是两个例子:
function capturePhoto() { navigator.camera.getPicture(onPhotoDataSuccess,onFail,{ quality: 30,correctOrientation: true }); } function getPhoto(source) { navigator.camera.getPicture(onPhotoURISuccess,destinationType: destinationType.FILE_URI,sourceType: source,correctOrientation: true }); }