2010-03-16 92 views
2

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

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

回答

2

您有几个选项,按我的优先顺序列出。

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

选项3在整个浏览器中可能不可靠,我不确定其性能。方案2会增加不必要的复杂性。您可能不想这样做,但除非您打算使用网络来存储除存储以外的任何内容,否则选项1是最好的选择。

1

旋转相机可能是最好的选择,但如果你的存储之前旋转和图像是JPEG,旋转是一种有损操作 - 让您存储图像将立即失去一些质量。

幸运的是,它并没有被这种方式 - 如果不是读取的JPEG,旋转图像,然后重新编码为JPEG,也有直接应用旋转文件的方式。

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

这里的一些C++代码,你可以尝试端口

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

对于.NET,我公司(Atalasoft)提供的SDK可以做到这一点。

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

+0

在高压缩比情况下,您的用户将无法在1次有损旋转后辨别差异。在有明显压缩伪影的质量水平下,对于未经训练的眼睛,这可能是个问题。有一个有损的旋转。 – mikerobi

+0

@ mikerobi这可能是真的,但谁喜欢丢失数据?不是我...... –

+0

@William Denniss,作为一名严肃的摄影师,我得到你来自哪里,但作为一名Web开发人员,我比“数字无损”更感兴趣“视觉上无损”。在高压缩比下,检测图像是否被重新压缩几乎是不可能的。当您过度压缩或反复重新压缩时,您只会遇到麻烦。 – mikerobi

相关问题