使用 TagLib 从 MP3 文件中提取专辑封面 - 有没有更好的方法编写此代码?
Posted
技术标签:
【中文标题】使用 TagLib 从 MP3 文件中提取专辑封面 - 有没有更好的方法编写此代码?【英文标题】:Extracting Album art from MP3 files using TagLib - Is there a better way write this code? 【发布时间】:2009-01-24 14:51:46 【问题描述】:我正在使用 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
【问题讨论】:
乍一看,我觉得代码没问题。你有问题吗? 它工作正常。我只是想知道是否有更快的方法来做到这一点。 【参考方案1】:乍一看,我觉得没问题。
您可以添加一些错误处理,例如TagLib.File.Create()
抛出错误或返回“Nothing
”。此外,如果 Tag
属性由于某种原因为空,如果您尝试访问“.Pictures
”,则会引发错误。
【讨论】:
【参考方案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
【讨论】:
以上是关于使用 TagLib 从 MP3 文件中提取专辑封面 - 有没有更好的方法编写此代码?的主要内容,如果未能解决你的问题,请参考以下文章