【问题标题】:Respecting EXIF orientation when displaying iPhone photos on the web在网络上显示 iPhone 照片时尊重 EXIF 方向
【发布时间】:2010-03-16 22:38:17
【问题描述】:

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

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

【问题讨论】:

    标签: php iphone html image-manipulation


    【解决方案1】:

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

    1. 在相机上旋转图像。
    2. 通过 Amazon EC2 上传数据并使用程序读取 exif 并进行轮换
    3. 在您的网络服务器上运行一个代理 s3 并执行轮换的程序。
    4. 使用一些花哨的Javascript 和 DHTML。

    选项 3 在浏览器中可能不可靠,我不确定性能。选项 2 会增加不必要的复杂性。您可能不想这样做,但除非您打算将网络用于存储以外的其他用途,否则选项 1 是最好的。

    【讨论】:

      【解决方案2】:

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

      幸运的是,它不必那样 - 如果不是读取 JPEG,旋转图像,然后重新编码为 JPEG,有办法直接对文件应用旋转。

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

      这里有一些你可以尝试移植的 C++ 代码

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

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

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

      【讨论】:

      • 在高压缩比下,您的用户将无法在 1 次有损旋转后分辨出差异。在存在明显压缩伪影的质量水平上,对于未经训练的人来说,这可能是个问题。旋转有损。
      • @William Denniss,作为一名严肃的摄影师,我知道你的来历,但作为一名网络开发人员,我对“视觉无损”比对“数字无损”更感兴趣。在高压缩比下,几乎不可能检测到图像是否被重新压缩。只有在过度压缩或反复重新压缩时才会遇到麻烦。
      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 2020-02-08
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 2017-06-26
      相关资源
      最近更新 更多