C# Taglib-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从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 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文件支持图片