2013-10-29 59 views
4

我正在嘗試使用System.Drawing.Image.GetPropertyItem(0x0112)讀取Exif值的方向。爲什麼System.Drawing.Image.GetPropertyItem在Windows XP/2003上的行爲與Windows 7相比有所不同

這適用於Windows 7和Windows 2008 R2,但在Windows XP/Windows Server 2003上失敗(獲取'Property Can not Be Found'錯誤)。

在Windows XP/2003中,如果我遍歷可用的屬性(使用PropertyItems System.Drawing.Image對象的屬性),我只得到0x5090(PropertyTagLuminanceTable)和0x5091(PropertyTagChrominanceTable)

使用完全相同圖像在Windows 7/Windows 2008中,我得到18個屬性,其中之一是0x0112。

我懷疑這可能與Vista和更高版本的Windows有更新版本的GDI +有關。有沒有什麼辦法可以讓Windows XP/2003在不用寫代碼的情況下讀寫Exif數據?

回答

1

NuGet上有一個庫叫做ExifReader和一個附帶的CodeProject文章here

下面的代碼應適用於獲得的方向,並且可以使用ExifTags的其他枚舉得到其他部分的元數據:

object result; 

var reader = new ExifReader("c:\\temp\\test\\sample.jpg"); 
reader.GetTagValue(ExifTags.Orientation, out result); 

var orientation = Convert.ToInt32(result); 

我與this image在Windows XP 32位SP3測試這使用.Net 4,它返回了1的方向,這看起來是正確的。

+0

ExifReader的工作原理。我很想知道爲什麼行爲有差異。 – tardomatic

+0

這是一個有用的答案(+1),但它沒有解決OP的問題(-1)。 – stakx

相關問題