Извлечение обложек альбомов из файлов MP3 с использованием TagLib - есть ли лучший способ написать этот код? - PullRequest
3 голосов
/ 24 января 2009

Я использую Visual Basic 9 (VS2008) и TagLib.

Следующий код извлекает обложку альбома из файла MP3 и отображает ее в PictureBox.

Есть ли лучший способ написать этот код?

 Dim file As TagLib.File = TagLib.File.Create(filepath)

 If file.Tag.Pictures.Length >= 1 Then
    Dim bin As Byte() = DirectCast(file.Tag.Pictures(0).Data.Data, Byte())
    PreviewPictureBox.Image = Image.FromStream(New MemoryStream(bin)).GetThumbnailImage(100, 100, Nothing, System.IntPtr.Zero)
 End If

Ответы [ 2 ]

3 голосов
/ 24 января 2009

На первый взгляд мне кажется, что все в порядке.

Вы можете добавить некоторую обработку ошибок, например, если TagLib.File.Create() выдает ошибку или возвращает "Nothing". Также, если свойство Tag по какой-либо причине пустое, будет выдано сообщение об ошибке, если вы попытаетесь получить доступ к ".Pictures".

2 голосов
/ 24 января 2009

Я не очень хорошо знаком с TagLib, но не похоже, что есть лучший способ написать это. Единственное, что я могу предложить, это то, что вы можете уменьшить объем кода, воспользовавшись выводом типа. Два объявления переменных не нуждаются в явном типе, если в данный момент включен «Option Infer». Это на самом деле не меняет качество кода, а просто уменьшает его количество.

Пример

 Option Infer On
 ...
 Dim file = TagLib.File.Create(filepath)

 If file.Tag.Pictures.Length >= 1 Then
    Dim bin = DirectCast(file.Tag.Pictures(0).Data.Data, Byte())
    PreviewPictureBox.Image = Image.FromStream(New MemoryStream(bin)).GetThumbnailImage(100, 100, Nothing, System.IntPtr.Zero)
 End If
...