从 Ipad 拍摄的照片将在服务器上反转
Posted
技术标签:
【中文标题】从 Ipad 拍摄的照片将在服务器上反转【英文标题】:Photo captured from Ipad will be inverted at server 【发布时间】:2014-09-18 15:52:38 【问题描述】:我正在 phonegap 中开发一个应用程序,并具有使用 Ipad 相机拍摄照片的功能,它可以正常工作,并且所有照片都正确保存在服务器上。唯一的问题是它们在保存在服务器上时向左旋转了 90 度。
现在我为存储在库中的照片尝试了相同的操作,并且它们像在服务器上一样上传,所以我认为问题在于 ipad 照片拍摄过程。谁能帮我找到解决此类问题的方法。是 Ipad 的正常行为还是我的代码有误?
我已将以下功能用于照片功能
//Capture Photo either from camera or IPAD library
function capturePhoto(source)
var deferred = $q.defer();
//When source == 1 than from Photo Library
var cameraOptions = quality: 70, destinationType: Camera.DestinationType.FILE_URI ;
if(source == 1) cameraOptions = quality: 70, destinationType: Camera.DestinationType.FILE_URI, sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,targetWidth: 600,targetHeight: 600 ;
navigator.camera.getPicture( function (imageURI)
window.resolveLocalFileSystemURI(imageURI, function (fileEntry)
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys)
fileSys.root.getDirectory("auditPhotos", create: true, exclusive: false, function(dir)
fileEntry.copyTo(dir,generateRandomID()+".jpg",function (entry)
deferred.resolve(entry.fullPath)
, null);
, null);
, null);
,null);
,
function (message)
deferred.reject(message);
,
cameraOptions
);
//deferred.resolve(generateRandomID()+".jpg");
return deferred.promise;
【问题讨论】:
【参考方案1】:当您将捕获的图像(使用上述功能)以 jpg 格式保存在服务器上时。 JPG 和 JPEG 具有 EXIF 的属性,用于存储图像的方向。当您通过 IPAD 捕获图像时,此 exif 数据存储相机方向和其他与位置相关的内容。但这仅由 ipad 而不是浏览器理解,这就是为什么在浏览器中看到图像旋转的原因,这是事实。当您在 IPAD 中查看相同的图像时,由于 EXIF 的可用性,它被 IPAD 设置在正确的位置。
要解决这个问题,只需将图像保存为 PNG 格式而不是 JPG 即可,一切正常 :-)
【讨论】:
【参考方案2】:我的朋友最近遇到了类似的问题,虽然我不太确定如何具体解决您的问题,但我知道图像上的 EXIF 数据应该存储有关其方向的信息。
如果需要,您可以尝试实现这个库来获取 EXIF 数据并在上传前旋转图像:https://code.google.com/p/iphone-exif/
【讨论】:
以上是关于从 Ipad 拍摄的照片将在服务器上反转的主要内容,如果未能解决你的问题,请参考以下文章