2014-01-27 59 views
1

我正在編寫一個讀取/寫入圖像元數據的應用程序(它將原始文件轉換爲jpeg/tiff),並且我需要將有關camera/mode/...的元數據寫入生成的jpeg。exif和xmp有什麼關係?它們可以互換嗎?

我知道我可以做到這一點使用exif和在Windows中我使用GDI來做到這一點。但是我正在從Adobe閱讀關於xmp和xmp sdk的信息。

我想知道應該使用哪一個? exif或xmp?

它們是如何相互關聯的?

爲什麼可以選擇編寫exif元數據,其他人可以選擇XMP?選擇它們的優點/缺點是什麼?

我寫在C++的Windows(的Visual Studio 2012)

+0

也許一個更好的問題上下載http://photo.stackexchange.com/ – Micha

回答

0

如果你正在寫的JPEG或TIFF格式,我想你應該與Exif堅持。

所有的TIFF格式閱讀器都能夠解析Exif,因爲Exif是TIFF的子集(具有特殊Exif定義標籤的子IFD)。大多數「JPEG」閱讀器也知道如何解析Exif/TIFF。

現在,您當然也可以將XMP添加到該文件中,但我建議您除了普通的Exif之外還要這樣做,並且只在您確實需要時才這樣做。

XMP確實允許更豐富的元數據。但是,由於您獲得的元數據來自相機RAW文件,因此Exif由數碼相機行業開發,完全符合您的描述,因此我認爲它們可以直接映射到Exif標籤。

因此,基本上來說:使用Exif是因爲它有更好的工具支持。僅在需要時添加XMP才能獲得更豐富的元數據。

0

XMP確實將值映射到exif標籤。
EXIF和XMP都是圖像元數據的豐富來源。
XMP的好處是它易於閱讀,任何支持XMP的應用程序(如所有的Adobe產品)都可以操作這些屬性。

XMP從圖像中的原始值中獲取值,因此基本上XMP提供了圖像中exif塊中屬性之間的映射,並根據ADOBE XMP SDK文檔中的定義在XMP命名空間中協調這些值。
使用XMP SDK來操作元數據的好處在於,讀取或寫入時不同圖像元數據格式(如exif,IPTC或XMP)之間的協調職責將轉移到XMP SDK。

如果對XMP屬性進行了任何更改,它將反映回圖像中的exif塊。同樣,如果任何不支持XMP的應用程序修改了exif元數據而未修改相應的xmp值,則在讀取操作時,XMP SDK會將此更改與XMP值協調一致,並且在寫入時會將此更改保存回來。

使用XMP SDK來操作元數據基本上更容易,因爲您可以將許多特定格式的詳細信息留給SDK來處理。

圖像元數據的不同來源的更多信息,請on the Metadata Working Group.

完整的產品規格可以從here.

相關問題