首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.Net中使用标记库-夏普2.0.4.0编写ArtWork时遇到问题

在.Net中使用标记库-夏普2.0.4.0编写ArtWork时遇到问题
EN

Stack Overflow用户
提问于 2011-08-30 07:57:50
回答 4查看 5.5K关注 0票数 1

在MP3文件中写入图稿时遇到问题。我可以使用Taglib-sharp读取和显示MP3文件中的所有图片,但是当需要在MP3标签中插入超过1张图片(例如:FrontCover和BackCover)时,我在使用that.If时遇到了问题这只是一幅图片……我可以做到这一点谁能扔给我骨头,并告诉我怎么做??(vb.net当然很好,但C#也可以做到这一点)。

还有一个请求..。并删除mp3标记内的图像??有没有人能给我举个例子,告诉我怎么做。

谢谢你的帮忙

EN

回答 4

Stack Overflow用户

发布于 2011-10-12 05:47:38

您是如何插入和删除图像的?你能发布一些代码吗?

所有标记都使用IPicture接口和Tag.Pictures的getter和setter。修改Tag.Pictures数组的内容不会对文件产生任何影响,因此修改现有列表涉及到获取当前值、对其进行操作,然后将其重新设置。简单地设置或清除图片会更容易。

您可以使用以下命令将文件设置为具有单个图像:

代码语言:javascript
复制
IPicture pictures = new IPicture[1];
pictures[0] = new Picture("path/to/picture.jpg");
file.Tag.Pictures = pictures;

您可以使用以下内容删除标签中的所有图像:

代码语言:javascript
复制
file.Tag.Pictures = new IPicture[0];
file.Save();

操作或更复杂,但遵循相同的思路。如果Tag.Pictures是一个IEnumerable而不是一个数组,那会更好,但现在已经完成了。

下面是一个从命令行参数设置图像的示例程序:https://github.com/mono/taglib-sharp/blob/master/examples/SetPictures.cs

票数 4
EN

Stack Overflow用户

发布于 2012-12-04 01:47:58

我遇到了和鲍比·巴姆拉一样的问题。我发现iTunes讨厌UTF-16,这就是问题所在。

代码语言:javascript
复制
targetMp3File = TagLib.File.Create(...);

// define picture
TagLib.Id3v2.AttachedPictureFrame pic = new TagLib.Id3v2.AttachedPictureFrame();
pic.TextEncoding = TagLib.StringType.Latin1;
pic.MimeType     = System.Net.Mime.MediaTypeNames.Image.Jpeg;
pic.Type         = TagLib.PictureType.FrontCover;
pic.Data         = TagLib.ByteVector.FromPath(...);

// save picture to file
targetMp3File.Tag.Pictures = new TagLib.IPicture[1] { pic };    
targetMp3File.Save();

所以从本质上讲,整个事情都在pic.TextEncoding行中。另外,我通过.NET常量指定了Mime类型。

因此,不需要使用TagLib.PictureType.Other或使用描述的变通方法。我的解决方案唯一的缺点是它只能正确地处理MP3文件。

票数 4
EN

Stack Overflow用户

发布于 2012-02-21 15:01:26

我在我的MP3标签应用程序中使用了以下标记库-sharp代码。在没有设置'mime‘和'type’的情况下,我无法让图片在ITunes中显示,随后也无法在我的Ipod上显示,即使Windows/WMP可以正确地显示它。

代码语言:javascript
复制
TagLib.File targetFileMp3Tag = TagLib.File.Create(...);

Picture picture = new Picture();
picture.Type = PictureType.Other;
picture.MimeType = "image/jpeg";
picture.Description = "Cover";        
picture.Data = ByteVector.FromStream(...);

targetFileMp3Tag.Tag.Pictures = new IPicture[1] { picture };
targetFileMp3Tag.save()

hth

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7237346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档