的意義,如果我右鍵單擊圖像,我得到的細節GPS下製作EXIF經度和緯度
當查詢EXIF(GpsLatitude和GpsLongitude)的數據,我得到
和
我可以看到,行0和8的度和分,但其餘的是沒有意義的。我錯過了什麼?
謝謝
的意義,如果我右鍵單擊圖像,我得到的細節GPS下製作EXIF經度和緯度
當查詢EXIF(GpsLatitude和GpsLongitude)的數據,我得到
和
我可以看到,行0和8的度和分,但其餘的是沒有意義的。我錯過了什麼?
謝謝
的Exif店緯度和經度三理性分子和分母長度爲四個字節的數字(分數)。
在你的榜樣,你只顯示前14個值。有24個字節的值需要考慮。
具體地說,緯度小時值爲0x00000027/0x00000001
,或39/1
。
注意,值存儲小端,所以字節必須扭轉。
通過只取字節0/8/16,你可能缺少蔓延到其他字節的值,你也假設分母永遠是一個。
使用庫從圖像中提取這些信息可能會容易得多。我保持.NET這樣的庫將與VB.NET工作得很好,並具有許多文件格式的Exif和許多其他類型的元數據的全面支持。
如果你有興趣,就來看看https://github.com/drewnoakes/metadata-extractor-dotnet
無法獲得最後一組,以顯示小數位(ToDouble不工作),但是這是非常接近
If Not vLong Is Nothing Then
vLong1 = BitConverter.ToUInt32(vLong, 0)
vLong2 = BitConverter.ToUInt32(vLong, 8)
vLong3 = BitConverter.ToUInt32(vLong, 16)
vLongDecode = CType(vLong1, String) & " " & CType(vLong2, String) & " " & CType(vLong3, String)
End If
If Not vLat Is Nothing Then
vLat2 = BitConverter.ToUInt32(vLat, 8)
vLat1 = BitConverter.ToUInt32(vLat, 0)
vLat3 = BitConverter.ToUInt32(vLat, 16)
vLatDecode = CType(vLat1, String) & " " & CType(vLat2, String) & " " & CType(vLat3, String)
End If
我已經標誌着起來,並作爲答案...將您庫還通過傳遞字節()或位圖工作?我們處理了很多圖像,不想開始將它們寫入文件 – gchq
@gchq無需將數據寫入文件。您可以從字節數組或流中操作。 ImageMetadataReader是一個很好的開始。 –