2010-03-16 35 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

相關問題