2010-04-25 89 views
5

我已經編寫了一個應用程序,通過.Net的System.Drawing.Image類中公開的PropertyItems從圖像中讀取基本EXIF數據。但是,我無法通過這些屬性檢索Canon特定的EXIF數據。如何閱讀這些信息?我知道它存在於文件中,就像Photoshop讀取它一樣。C#檢索Canon特定的EXIF數據

回答

1

BCL中沒有任何內容可以幫助EXIF。

看看this SO問題和答案(什麼是.Net最好的EXIF庫?)。有幾種商業和開源庫可用於獲取EXIF數據。

2

如果您針對Framework(或更高版本)的v3進行編譯,那麼您可以使用BitmapSource class加載圖像,該圖像通過Metadata property公開EXIF元數據。這給圖片中的EXIF信息提供了更加緊密的連接,儘管製造商的註釋是特定的並且需要進一步的解碼。

3

我剛發現這個,但還沒有使用它。它看起來像它有製造商的具體信息。

http://renaud91.free.fr/MetaDataExtractor/

UPDATE:

的元數據提取項目一直活着,並自2002年以來對Java很好,現在可用於.NET。它全面支持佳能製造商以及愛克發,卡西歐,愛普生,富士膠捲,柯達,京瓷,徠卡,美能達,尼康,奧林巴斯,松下,賓得,三洋,Sigma/Foveon和索尼相機和掃描儀。

您可以在此瀏覽多個佳能(和其他)相機圖像的示例輸出。

該庫可通過NuGet或GitHub使用。

使用範例:

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path); 

foreach (var directory in directories) 
foreach (var tag in directory.Tags) 
{ 
    Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}"); 
} 

看到更新的答案在這裏:C# Retrieve Canon Specific EXIF Data

+1

我可以驗證這個奇妙的作品!許多製造商將大部分有用的Exif數據存儲在「Makernote」字段中。這個工具將所有這些解析成一個充滿Exif標籤的可愛的小XML友好字典。 – glenneroo 2011-01-09 22:12:13

+0

這是我的_metadata-extractor_項目的過時端口。我現在維護一個正式的C#版本,它具有更多功能和許多錯誤修復。請參閱[我的答案](http://stackoverflow.com/a/32771543/24874)瞭解更多信息。 – 2015-09-24 21:55:14

0

我幾個月前在C#中編寫了一個取證工具,並使用Phil Harvey的EXIF Tool從照片中獲取EXIF數據。是的,這是一個PERL庫,但它很容易安裝並集成到我的C#應用​​程序中。

1

元數據提取器項目自2002年以來一直活躍於Java,現在可用於.NET。它全面支持佳能製造商以及愛克發,卡西歐,愛普生,富士膠捲,柯達,京瓷,徠卡,美能達,尼康,奧林巴斯,松下,賓得,三洋,Sigma/Foveon和索尼相機和掃描儀。

您可以瀏覽幾個佳能(和其他)相機圖像here的示例輸出。

該庫可通過NuGetGitHub獲取。

使用範例:

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path); 

foreach (var directory in directories) 
foreach (var tag in directory.Tags) 
{ 
    Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}"); 
} 

注意,在Mark Redman's answer的lib是我的Java庫從許多年前的過時的端口。我現在維護C#和Java項目都具有功能奇偶性。