不确定会导致这种情况,但是当我通过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
感谢任何见解。
答案 0 :(得分:16)
感谢Humanoidism指出问题实际上是iPhone及其存储图像的方式,我能够找到解决方案。
要以正确的方向上传照片,您必须将correctOrientation
设置添加到getPicture()
中的选项数组中,并将其设置为true
。
以下是两个例子:
function capturePhoto() {
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 30, correctOrientation: true });
}
function getPhoto(source) {
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 30,
destinationType: destinationType.FILE_URI,
sourceType: source,
correctOrientation: true });
}
答案 1 :(得分:1)
问题不是PhoneGap而是iPhone。 iPhone被设计用作宽镜头相机。如果您打算在桌面上查看,请在拍照或拍摄视频时将手机侧向转动。您的手机会正确显示它们,因为它“知道”您如何使用它们,但是您正在查看它的计算机不会。
您可以采取的措施是在上传前旋转图片。这不是推荐的修复程序,但至少桌面计算机上的人将能够看到它。虽然在iPhone上查看它们时它们会被旋转 - 也许对移动设备进行检查是否有用或者不旋转图像可能会派上用场 - 但是仍然不推荐。