-1

嗨,当我尝试使用 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 文件,但不适用于所有文件?

4

1 回答 1

1

如果要访问数组的元素,则应始终检查它是否不为空以及是否包含任何元素:

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));
}
于 2015-01-02T13:25:45.127 回答