2014-01-24 2 views
2

я удалить все фотографии из тега ID3 с TagLib-диез (версия 2.1.0):Удалить все фотографии тега ID3 с TagLib острыми

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

Если я снова прочитать файл с TagLib-диез фотографий больше нет. Это нормально, но размер файла остается прежним.

Если я удалю picutre с помощью инструмента, такого как mp3tag (http://www.mp3tag.de), размер файла уменьшается.

У кого-нибудь есть идея, как уменьшить размер файла с помощью taglib-sharp?

Заранее спасибо.

Рене

ответ

0

Я смотрел на это и у меня есть обходной путь, если вы сохранить ссылку на все теги, которые вы хотите сохранить, удалить теги и добавить те, которые вы хотите вернуться в файл размер сжимается. Я понимаю, что это довольно ужасно, но это работает. Так что, если вы просто хотите сохранить название:

 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(); 
     } 
+0

спасибо большое. Теперь я сохраняю полный тег с помощью CopyTo, удаляю все теги, сохраняю тег и после этого пишу его с помощью CopyTo и сохраняю его снова: –

+1

@ReneHilgers Не могли бы вы поделиться своим кодом в качестве ответа? – SepehrM

0

Поскольку 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(); 
Смежные вопросы