从 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 拍摄的照片将在服务器上反转的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone/iPad 上使用 iOS5 或 iOS6 拍摄的照片上添加文本标签?

iPad 拍摄 16:9 照片

无法上传照片库视频,但可以上传从相机 iOS 拍摄的视频

从ios照片上传中读取exif日期

以纵向模式从相机拍摄的加载到画布上的照片是横向的

是否有可能发现照片是否被拍摄?