TagLibを使用してMP3ファイルからアルバムアートを抽出する-このコードを記述するより良い方法はありますか?

StackOverflow https://stackoverflow.com/questions/476101

質問

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
役に立ちましたか?

解決

TagLibに親しみはありませんが、これを書くためのより良い方法がたくさんあるようには見えません。私ができる唯一の提案は、型推論を利用することでコードの量を減らすことができるということです。 <!> quot; Option Infer <!> quot;の場合、2つの変数宣言は明示的な型を必要としません。現在オンです。ただし、実際にはコードの品質は変わりませんが、コードの量が減るだけです。

 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.File.Create()がエラーをスローしたり、<!> quot; Nothing <!> quot;を返したりする場合、エラー処理を追加できます。また、何らかの理由でTagプロパティが空の場合、<!> quot; .Pictures <!> quot;にアクセスしようとするとエラーがスローされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top