2015-01-02 4 views
-1

Привет, когда я пытаюсь получить обложку альбома из файла 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 MemoryStream(bin)); 

код работает с mp3 файлами, но не с FLAC. Итак, как мне получить обложку альбома в C#?

Редактировать: Я выяснил, что код работает с некоторыми файлами flac, но не со всеми?

+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)); 
} 
+0

Да, я знаю, но это не проблема, проблема в том, что она не находит картинку, хотя я знаю, что она есть. – Kyeman

+0

@Kyeman, как вы узнали, что есть изображение? – kmatyaszek

+0

С помощью любой медиапрограммы с поддержкой файлов flac, таких как vlc media player или foobar2000 – Kyeman

 Смежные вопросы

  • Нет связанных вопросов^_^