C# Taglib-flac覆盖
嗨,当我尝试使用Taglib从flac文件中获取专辑封面时,我遇到了这个错误 索引超出了数组的边界 尽管我知道flac文件包含一个图像。 我正在使用以下代码:C# Taglib-flac覆盖,c#,.net,winforms,taglib,flac,C#,.net,Winforms,Taglib,Flac,嗨,当我尝试使用Taglib从flac文件中获取专辑封面时,我遇到了这个错误 索引超出了数组的边界 尽管我知道flac文件包含一个图像。 我正在使用以下代码: TagLib.File f = TagLib.File.Create(path); if(f.Tag.Pictures.Length == 0) return; var bin = (byte[])(f.Tag.Pictures[0].Data.Data); songData.Cover = Image.FromStream(new M
TagLib.File f = TagLib.File.Create(path);
if(f.Tag.Pictures.Length == 0) return;
var bin = (byte[])(f.Tag.Pictures[0].Data.Data);
songData.Cover = Image.FromStream(new MemoryStream(bin));
该代码适用于mp3文件,但不适用于flac。
那我怎么才能得到c#的专辑封面呢
编辑:我发现该代码适用于某些flac文件,但不适用于所有文件?如果要访问数组的元素,应始终检查该元素是否为null以及是否包含任何元素:
TagLib.File f = TagLib.File.Create(path);
if(f.Tag.Pictures != null && f.Tag.Pictures.Length != 0)
{
var bin = (byte[])(f.Tag.Pictures[0].Data.Data);
songData.Cover = Image.FromStream(new MemoryStream(bin));
}
在访问阵列之前检查阵列的长度如何?是的,我知道,但这不是问题所在。问题是,即使我知道有图片,它也找不到图片。通过使用支持flac文件的任何媒体程序,如vlc media player或foobar2000@Kyeman我认为你的flac文件没有图片,可能您的文件夹中有一些.jpg文件,其中是flac文件,此文件由媒体程序加载。flac文件支持图片