【问题标题】:Delete all pictures of an ID3 tag with taglib-sharp使用 taglib-sharp 删除 ID3 标签的所有图片
【发布时间】:2014-01-24 22:51:38
【问题描述】:

我用taglib-sharp(2.1.0版)删除了一个ID3标签的所有图片:

tagFile.Tag.Pictures = new TagLib.IPicture[0];
tagFile.Save();

如果我用 taglib-sharp 再次读取文件,就没有更多图片了。这没关系,但文件大小保持不变。

如果我使用 mp3tag (http://www.mp3tag.de) 之类的工具删除图片,文件大小会减小。

有人知道如何使用 taglib-sharp 减小文件大小吗?

提前致谢。

雷内

【问题讨论】:

    标签: c# mp3 taglib id3 taglib-sharp


    【解决方案1】:

    因为SepehrM 要求我发布我的代码作为答案:

    TagLib.Tag tempTag = null;
    TagLib.File tagFile = TagLib.File.Create(file);
    tempTag = new TagLib.Id3v2.Tag();
    tagFile.Tag.CopyTo(tempTag,true);
    tagFile.RemoveTags(TagLib.TagTypes.AllTags);
    tagFile.Save();
    tagFile.Dispose();
    
    
    TagLib.File tagFile2 = TagLib.File.Create(file);
    tempTag.CopyTo(tagFile2.Tag, true);
    tagFile2.Save();
    tagFile2.Dispose();
    

    【讨论】:

      【解决方案2】:

      我一直在研究这个,我有一个解决方法,如果您保留对所有要保留的标签的引用,删除标签并添加您想要的标签,文件大小会缩小。我意识到这很可怕,但它确实有效。因此,如果您只想保留标题:

              string title;
              using (var taglibFile = TagLib.File.Create(file))
              {
                  title = taglibFile.Tag.Title;
                  taglibFile.RemoveTags(TagTypes.AllTags);
                  taglibFile.Save();
              }
      
              using (var tagLibFile = TagLib.File.Create(file))
              {
                  tagLibFile.Tag.Title = title;
                  tagLibFile.Save();
              }
      

      【讨论】:

      • 非常感谢。我现在用 CopyTo 保存完整的标签,删除所有标签,保存标签,然后用 CopyTo 写回并再次保存:
      • @ReneHilgers 你能分享你的代码作为答案吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多