不幸的是,看起来 LibTiff.Net 只能读取 EXIF 标签而不能写入它们(原始 libtiff 也不能写入 EXIF 标签)。
libtiff 邮件列表中有一个关于为什么会这样的讨论。以下是讨论中的一些引述:
// FIXME -- we don't currently support writing of EXIF fields. TIFF
// in theory allows it, using a custom IFD directory, but at
// present, it appears that libtiff only supports reading custom
// IFD's, not writing them.
伦纳德·罗森霍尔:
I don't really think that libTIFF really wants to start down the
metadata "rabbit hole"...
鲍勃弗里森汉:
I do agree with Leonard Rosenthol that libtiff should not be in the
business of dealing with EXIF private IFD tags (even though it
somewhat does already).
至于Unknown tag EXIF_USERCOMMENT
,你应该先阅读一个EXIF目录。该库将在读取 EXIF 目录之前将 EXIF 标签添加到其已知标签列表中,并且以后不会发出有关未知标签的错误。
但是该库仍然无法将 EXIF 标记写入文件。
编辑:
如果您只想在文件中存储一些信息而不要求将其存储在EXIF_USERCOMMENT
标签中,则可以选择一些选项。
您可以IMAGEDESCRIPTION
为您的任务使用标签。下面是使用此标签的示例代码。请注意,代码对Open
方法使用不同的参数,并且还使用RewriteDirectory
了WriteDirectory
.
string fileName = "C:\\temp\\~tempCapture.tif";
using (Tiff tiffdoc = Tiff.Open(fileName, "a"))
{
tiffdoc.SetDirectory(0);
bool bSetField = tiffdoc.SetField(TiffTag.IMAGEDESCRIPTION, "test comment field");
tiffdoc.RewriteDirectory();
}