-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

配列の要素にアクセスする場合は、それが 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));
}
于 2015-01-02T13:25:45.127 に答える