3

我正在使用 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
4

2 回答 2

3

乍一看,我觉得没问题。

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

于 2009-01-24T15:05:29.413 回答
2

我对 TagLib 不是很熟悉,但看起来没有更好的方法来编写它。我能给出的唯一建议是,您可以利用类型推断来减少代码量。如果“选项推断”当前处于启用状态,则这两个变量声明不需要显式类型。这实际上并没有改变代码的质量,它只是减少了代码的数量。

例子

 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
于 2009-01-24T15:21:29.693 回答