我想用Taglib#库(GitHub,NuGet Install-Package taglib)编写图像标签(关键字标签),所以我使用了这个例子和本教程。基于它,我编写了此方法:
using TagLib;
public void AddTagsToImage()
{
string path = @"C:image.jpg";
string[] tagset = new string[] { "tag1", "tag2", "tag3" };
TagLib.File tagFile = TagLib.File.Create(path);
var image = tagFile as TagLib.Image.File;
image.ImageTag.Keywords = tagset;
image.Save();
}
它可以编译,但不能按预期工作。图像文件可以正常打开,然后我们将其标识为图像,但是我尝试设置图像。ImageTag.Keywords 属性没有任何反应(它是 string[] 就像 tagset 一样)。因此,保存图像不会修改任何内容。那么,我需要如何修改才能完成这项工作呢?
编辑。该问题是由于错误0x88982F72,或者显然,如果图像元数据不存在/损坏的 Taglib# 库可能无法正常工作。
我已经尝试过您的代码并且对我来说很好用。
static void Main(string[] args)
{
string path = @"C:image.jpg";
string[] tagset = new string[] { "tag1", "tag2", "tag3" };
TagLib.File tagFile = TagLib.File.Create(path);
var image = tagFile as TagLib.Image.File;
Console.WriteLine("Rating : " + image.ImageTag.Rating);
Console.WriteLine("DateTime : " + image.ImageTag.DateTime);
Console.WriteLine("Orientation : " + image.ImageTag.Orientation);
Console.WriteLine("Software : " + image.ImageTag.Software);
Console.WriteLine("ExposureTime : " + image.ImageTag.ExposureTime);
Console.WriteLine("FNumber : " + image.ImageTag.FNumber);
Console.WriteLine("ISOSpeedRatings : " + image.ImageTag.ISOSpeedRatings);
Console.WriteLine("FocalLength : " + image.ImageTag.FocalLength);
Console.WriteLine("FocalLength35mm : " + image.ImageTag.FocalLengthIn35mmFilm);
Console.WriteLine("Make : " + image.ImageTag.Make);
Console.WriteLine("Model : " + image.ImageTag.Model);
image.ImageTag.Keywords = tagset;
image.Save();
foreach (var item in image.ImageTag.Keywords)
Console.WriteLine("> Tag: " + item);
Console.ReadLine();
}
请注意,要测试此代码,您需要在路径中实际有一个图像:C:\image.jpg