使用TagLib从MP3文件中提取专辑封面 - 有没有更好的方法来编写此代码?

时间:2009-01-24 14:51:47

标签: vb.net optimization performance mp3 taglib

我正在使用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 个答案:

答案 0 :(得分:3)

乍一看它对我来说没问题。

您可以添加一些错误处理,例如,如果TagLib.File.Create()引发错误或返回“Nothing”。此外,如果Tag属性由于某种原因为空,如果您尝试访问“.Pictures”,则会引发错误。

答案 1 :(得分:2)

我对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