我正在开发一款iPhone相机应用程序,可将图像上传到Amazon S3,并且该图像会显示在网站上。当iPhone拍照时,它始终以直立方向保存照片,而用于正确查看照片的方向则保存在图像的EXIF数据中。因此,如果我使用iPhone拍照并在FireFox中打开它而不处理EXIF数据,则图像可能是横向或颠倒。
我的问题是我不知道如何在网站上以正确的方向显示照片。我目前的解决方案是在iPhone应用程序中旋转照片,但我宁愿不这样做。在没有预处理图像的情况下,在网上显示时是否还要尊重EXIF数据?
答案 0 :(得分:2)
您有多个选项,按我的偏好顺序列出。
选项3在浏览器中可能不可靠,我不确定性能。选项2会增加不必要的复杂性。您可能不想这样做,但除非您计划将网络用于除存储之外的任何其他内容,否则选项1最佳。
答案 1 :(得分:1)
在相机上旋转可能是最佳选择,但如果您在存储前旋转并且图像是JPEG,则旋转是一项有损操作 - 因此您存储的图像将立即失去一些质量。
幸运的是,它不一定是这样 - 如果不是在JPEG中读取,旋转图像然后重新编码为JPEG,有一些方法可以直接将旋转应用到文件中。
JPEG被存储为一系列8x8单元格 - 它们可以单独旋转和重新排列而不会丢失质量(90度增量) - 然后您需要更新具有大小信息的元数据。
以下是您可以尝试移植的一些C ++代码
http://eng.neologica.it/download/downloadIJGWin32.html
对于.NET,我的公司(Atalasoft)提供了可以执行此操作的SDK。
另一种选择是读取JPEG,旋转然后存储为PNG,但文件大小会大得多。