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