C#中MP3艺人图片的读取、编辑方法及音频类库推荐
C# 读取与编辑MP3艺人图片(ID3封面)解决方案
推荐类库
直接用TagLib#,这是个成熟的C#音频标签处理类库,专门用来处理MP3、FLAC等格式的ID3标签(包括艺人图片这类附加资源),可以通过NuGet直接安装:
Install-Package TagLibSharp
读取MP3中的艺人图片
通过类库获取ID3标签里的图片资源,提取后保存为本地文件:
using TagLib; using System.IO; // 加载目标MP3文件 var mp3File = TagLib.File.Create("target.mp3"); // 判断是否包含艺人图片 if (mp3File.Tag.Pictures.Length > 0) { var coverPicture = mp3File.Tag.Pictures[0]; // 根据MIME类型匹配图片扩展名 var extension = coverPicture.MimeType switch { "image/jpeg" => ".jpg", "image/png" => ".png", _ => ".bin" // 未知格式用通用后缀 }; // 将图片数据写入本地文件 File.WriteAllBytes($"artist_cover{extension}", coverPicture.Data.Data); } // 释放文件资源 mp3File.Dispose();
编辑MP3中的艺人图片
替换或添加新的艺人图片到MP3文件的ID3标签中:
using TagLib; using System.IO; // 加载目标MP3文件 var mp3File = TagLib.File.Create("target.mp3"); // 读取本地准备好的艺人图片数据 var newCoverData = File.ReadAllBytes("new_artist_cover.jpg"); // 创建图片对象,指定MIME类型和描述 var newCover = new Picture(new ByteVector(newCoverData)) { MimeType = "image/jpeg", Description = "Artist Cover" }; // 清空原有图片,添加新图片(若要保留多张可直接追加到集合) mp3File.Tag.Pictures = new IPicture[] { newCover }; // 保存修改到MP3文件 mp3File.Save(); // 释放文件资源 mp3File.Dispose();
注意事项
- 操作前确保MP3文件未被其他程序占用,否则会抛出文件访问异常
- 优先使用JPG/PNG格式的图片,MIME类型要和图片格式对应,避免标签识别异常
- 如果需要保留原有其他标签信息,仅修改
Pictures集合即可,不要覆盖整个Tag对象
内容的提问来源于stack exchange,提问作者Danial
相关产品推荐
相关产品推荐

