在网络上显示iPhone照片时,尊重EXIF方向

时间:2010-03-16 22:38:18

标签: php iphone html html5 image-manipulation

我正在开发一款iPhone相机应用程序,可将图像上传到Amazon S3,并且该图像会显示在网站上。当iPhone拍照时,它始终以直立方向保存照片,而用于正确查看照片的方向则保存在图像的EXIF数据中。因此,如果我使用iPhone拍照并在FireFox中打开它而不处理EXIF数据,则图像可能是横向或颠倒。

我的问题是我不知道如何在网站上以正确的方向显示照片。我目前的解决方案是在iPhone应用程序中旋转照片,但我宁愿不这样做。在没有预处理图像的情况下,在网上显示时是否还要尊重EXIF数据?

2 个答案:

答案 0 :(得分:2)

您有多个选项,按我的偏好顺序列出。

  1. 在相机上旋转图像。
  2. 通过Amazon EC2上传数据并使用程序读取exif并进行轮换
  3. 在代理s3的Web服务器上运行程序并进行轮换。
  4. 使用一些花哨的Javascript和DHTML。
  5. 选项3在浏览器中可能不可靠,我不确定性能。选项2会增加不必要的复杂性。您可能不想这样做,但除非您计划将网络用于除存储之外的任何其他内容,否则选项1最佳。

答案 1 :(得分:1)

在相机上旋转可能是最佳选择,但如果您在存储前旋转并且图像是JPEG,则旋转是一项有损操作 - 因此您存储的图像将立即失去一些质量。

幸运的是,它不一定是这样 - 如果不是在JPEG中读取,旋转图像然后重新编码为JPEG,有一些方法可以直接将旋转应用到文件中。

JPEG被存储为一系列8x8单元格 - 它们可以单独旋转和重新排列而不会丢失质量(90度增量) - 然后您需要更新具有大小信息的元数据。

以下是您可以尝试移植的一些C ++代码

http://eng.neologica.it/download/downloadIJGWin32.html

对于.NET,我的公司(Atalasoft)提供了可以执行此操作的SDK。

另一种选择是读取JPEG,旋转然后存储为PNG,但文件大小会大得多。