if元數據根據不同的內容分布在五個不同的IFD中。
一般談論的Exif數據都是指Exif subIFD 和IFD0 中的數據。
Exif數據是在拍攝時由相機軟件生成並嵌入到JPG文件中,沒有規定必需生成哪些數據,一般就選幾個常用的,不同廠商也有不同的選擇,這就是為什么不同相機拍的照片其Exif所包含的內容不一樣。
Exif定義了大量的元數據,其中有一部分很少用到,還有一些比較直觀易懂,這里僅對幾個容易產生疑問的做些解釋。
比如某相機拍攝出來的相片,文件分辨率比如寬度7360像素,高度4912像素
默認情況下,會在00000030:07標志位(不同設備或程序生成的圖片的標志位會有所不同,由EXIF內容而定)上存放01值表示原始文件的位置,無論這張圖是橫著拍的還是堅著拍的,初始值為01
拍攝時相機方位,橫向還是縱向。用數值表示旋轉的方向,但更多是先設定原始圖片的上邊為0行,左邊為0列,用行列的位置來解讀轉動的方位,所以“上左”(0行為上,0列為左)為原始位置,“右上”(0行為右,0列為上)即上邊變為右邊,左邊變為上邊,順時針轉90度。如下表所示。 x
數值0行 0 列旋轉說明0上左原始位置3下右180度6右上順時針90度8左下逆時針 90 度
那么圖片,在Windows 10操作系統下,通過操作系統自帶的“相片”程序進行旋轉時,僅僅對此標志位進行改變,而圖片的內容不會做任何改變,包括旋轉后的寬度與高度也不會做改變,包括JPEG和EXIF中的寬度與高度信息。
然而,在Windows 10進行旋轉的圖片,如果在Windows XP或Windows 7上面通過“相片”進行查看仍然顯示為未旋轉前的圖片,因為不識別這個標志位。
資源管理器在顯示分辨率那一欄中也自然是無法識別,低版本的程序無法識別高版本的標志位導致的問題。
于是,在處理旋轉過后的圖片,通過JDK 8.0版本去讀取javax.imageio.ImageIO.read(new File(fileName)).getWidth/getHeight寬度和高度時,也是無法獲知到底是不是旋轉過的。
包括其他比如HypeSnap 5.6.0版本的一些舊程序,在打開時都會由于不支持這種方式而導致仍是未旋轉的問題。
試過JDK 8.0/9.0/10.0均無法識別,目前最新版本的OpenJDK 13.0版本也沒能識別出來旋轉后的分辨率。
但是,如果是在Windows XP或Windows 7當中,對圖片文件進行旋轉時,文件的內容做了全面的變化。旋轉后的寬度與高度也會改變并保存到EXIF中,圖片內容的改變。這樣旋轉后的文件在其他操作系統上進行打開時都是正確的旋轉后的結果。
Windows 下用縮略圖視圖查看圖像會按照【第一步讀取當前文件夾下Thumbs.db – 如果沒有Thumbs.db文件則讀取圖像exif縮略圖信息 – 如果圖像文件沒有exif縮略圖信息則生成縮略圖信息并保存至Thumbs.db】如此規則循環。
其他還有水平翻轉,垂直翻轉等,因照片拍攝沒有這樣的功能,所以沒有列出。
需要指出的是只有能識別方向參數的圖像軟件(如Acdsee,Photoshop)才能在查看圖像時自動旋轉,Windows下的圖片查看器沒有這種功能。
名稱 水平分辨率
Tag 0X011A
Tag 0XA20E
所在目錄 IFD0
所在目錄 Exif SubIFD
名稱 垂直分辨率
Tag 0X111B
Tag 0XA20F
所在目錄 IFD0
所在目錄 Exif SubIFD
名稱 分辨率單位
(英寸/厘米)
Tag 0X0128
Tag 0XA210
所在目錄 IFD0
所在目錄 Exif SubIFD
Exiv2:一個基于C++、跨平臺的程序,可以讀寫圖片元數據(EXIF, IPTC, XMP)。它提供了可執行文件供命令行使用,也提供了C++的API供編程。
在前端領域,可以通過exif-js識別圖片的exif信息
https://www.npmjs.com/package/exif-js
參考資料:
圖片文件Exif信息詳細說明 blog.sina.com.cn/s/blog_651251e60102uz3d.html#AboutExif
圖像Exif信息 元數據(Metadata) https://www.jianshu.com/p/a6d67df60e7e
關于圖片文件旋轉JPEG與EXIF信息 https://blog.csdn.net/yulimin/article/details/102827865
https://www.media.mit.edu/pia/Research/deepview/exif.html
https://baike.baidu.com/item/Exif/422825?fr=aladdin
讀取JPG圖片的Exif屬性(一) - Exif信息簡介 https://blog.csdn.net/fioletfly/article/details/53605959
讀取JPG圖片的Exif屬性(二) - C代碼實現 https://blog.csdn.net/fioletfly/article/details/54094940
讀取JPG圖片的Exif屬性(三) - Exif屬性讀取GPS信息代碼(C/C++實現)https://blog.csdn.net/fioletfly/article/details/54133422
在jpg圖片添加Exif信息的C程序實現 https://blog.csdn.net/psy6653/article/details/79658144
JPEG添加EXIF https://blog.csdn.net/weixin_43549602/article/details/84654965
jpeg圖片格式詳解 https://blog.csdn.net/yun_hen/article/details/78135122
壓縮算法——JPEG2000 編解碼原理 https://blog.csdn.net/ytang_/article/details/76571635
PNG、JPEG、BMP等幾種圖片格式詳解 https://www.jianshu.com/p/f5557c0e689e
使用HTTP2和漸進式JPEG圖片更快的加載圖像 http
轉載本站文章《JPEG/Exif/TIFF格式解讀(4):win10照片旋轉win7不識別。》,請注明出處:https://www.zhoulujun.cn/html/theory/multimedia/CG-CV-IP/8399.html
這篇文章有較強的時效性,其中的信息可能已經發生了改變。
我們推薦 iOS 平臺最新鮮及時的 App 限時免費與冰點促銷,最大牌熱門的 App 更新與上架消息,這里是「應用派推薦」欄目,帶你發現更多優質有趣的 App。
【提示】點擊 文章介紹 >,可閱讀少數派關于此 App 的相應文章介紹。
Data Usage Pro(¥12→免費)實時數據流量監測工具,主題顏色會隨著你最近的使用情況改變,可以看做某種直觀的提示吧。支持設置每日流量限額,當然也有通知中心小部件的,還有齊全的歷史記錄和圖表統計。首次限免,推薦收。
Centroid(¥6→免費)實時晶格化相機,一邊照相一邊就可以實時預覽畫面變成各種多邊形色塊效果,當然也能把照片保存下來。支持設定多邊形形狀、密度,又或者直接用手指涂抹成不同形狀,玩圖黨快收。
Squares(¥6→免費)移動小方塊,使其到達對應顏色的圓點上面。屬于畫面清新規則簡單卻耐玩的類型,即便只是新手模式,幾關之內就可以感受到關卡設計的巧妙之處!需要合適地組合不同色塊的移動順序,后期難度劇增,完成一關還是蠻有成就感的。
Geekbanch 3(¥6→免費)誰說只有 Android 機才能跑分,Geekbanch 就是 iOS 平臺的硬件性能跑分應用,應用為通用版,iPhone、iPad 都能拿出來跑一跑。再次限免,收下就可以大喊「不服跑個分」了。
ACDSee(¥12→免費)桌面端的老牌圖片管理應用,iOS 版主打照片拍攝和后期調整功能,再次限免。
Instaflash Pro(¥30→免費)同為 ACDSee 出品的一款修圖應用,功能與通常的修圖應用大同小異,比它更優秀的同類替代品很多,可參考我派此前文章《40 款被蘋果選入「用 iPhone 6 拍攝」專題的攝影 App》。
Agent RX(¥12→免費)基地被不知名的敵人入侵了,作為一名無比犀利的特工你需要秘密潛入扭轉乾坤(基本上可以說是有點浮夸和老套的劇情啦)。類似Space Marshals的俯視視角即視感,但是沒有槍戰,點擊屏幕,收集東西解解謎的套路。首次限免,推薦收。
M-Type(iPad:¥6→免費)極簡的射擊游戲,剪紙畫風,雙搖桿操作,難度有些虐。剛上架數月首次限免,推薦收。
NedTheNeuron(¥25→免費)一本講解大腦構造與腦細胞的科普互動書,兒童向。
Lep's World 3(¥6→免費)類馬里奧風格的橫版闖關游戲,玩法就不多作介紹,畫風看個人喜好了。游戲結束時有廣告,不影響正常游戲,有愛自取。
TextExpander 3(¥30→¥6)這是一款為大幅提升碼字效率的 iOS 8 第三方鍵盤,是系統「用戶詞典」的高級版。使用它,你可以將冗長復雜的文本,設置為只有兩三個字符的快捷短語,大大提升你在 iOS 上的文字輸入速度。
除了簡單的自定義短語,它還支持調用剪切板、自定義光標位置、默認選中文本、自動時間格式和簡單計算等復雜特性。我派去年在 TextExpander 3 上架之初便對其進行了,現今的版本已較之前有非常大的改善,強烈推薦喜歡在 iPhone / iPad 上碼字或寫代碼的朋友收下,¥6 是該應用的最低價格,從未限免。
Gneo(¥68→¥28)一款智能化的 To-do 效率應用,被評為「App Store 編輯選薦」。Gneo 以「四象限」的方式,將你的待辦事項分為不同的緊急程度,讓你更有針對性地處理當前最重要的事情,是一款質量上乘的 GTD 應用。應用歷史最低價 ¥6,如果你仍在尋找更適合自己的 GTD 工具,不妨試試 Gneo。