2013-07-28 49 views
1

我正在製作一個播放器,而我陷入了一個顯然很簡單的問題。 我需要將歌曲的封面藝術顯示在一個圖像框中。 我發現這兩種解決方案:使用taglib在WPF中的圖像框中顯示封面藝術

此:

var file = TagLib.File.Create(filename); 
    if (file.Tag.Pictures.Length >= 1) 
    { 
     var bin = (byte[])(file.Tag.Pictures[0].Data.Data); 
     PreviewPictureBox.Image = Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(100, 100, null, IntPtr.Zero); 
    } 

這:

System.Drawing.Image currentImage = null; 

// In method onclick of the listbox showing all mp3's 
TagLib.File f = new TagLib.Mpeg.AudioFile(file); 
if (f.Tag.Pictures.Length > 0) 
{ 
    TagLib.IPicture pic = f.Tag.Pictures[0]; 
    MemoryStream ms = new MemoryStream(pic.Data.Data); 
    if (ms != null && ms.Length > 4096) 
    { 
     currentImage = System.Drawing.Image.FromStream(ms); 
     // Load thumbnail into PictureBox 
     AlbumArt.Image = currentImage.GetThumbnailImage(100,100, null, System.IntPtr.Zero); 
    } 
    ms.Close(); 
} 

但兩者對Windows窗體,我想,因爲我與他們的問題。

我不確定哪個解決方案最有意義。任何人都可以給我一些指點?

+1

你有什麼問題? – Shaharyar

回答

1

使用System.Windows.Controls.Image在UI上顯示您的圖像。您必須設置它的Source屬性才能提供圖像數據在UI上呈現。

// Load you image data in MemoryStream 
TagLib.IPicture pic = f.Tag.Pictures[0]; 
MemoryStream ms = new MemoryStream(pic.Data.Data); 
ms.Seek(0, SeekOrigin.Begin); 

// ImageSource for System.Windows.Controls.Image 
BitmapImage bitmap= new BitmapImage(); 
bitmap.BeginInit(); 
bitmap.StreamSource = ms; 
bitmap.EndInit(); 

// Create a System.Windows.Controls.Image control 
System.Windows.Controls.Image img = new System.Windows.Controls.Image(); 
img.Source = bitmap; 

然後,您可以將此圖像控件添加/放置到UI。

+0

好的!我知道了! 當歌曲沒有封面時,我只是有問題,但我使用try-catch來修復它。 非常感謝! –

+1

是的,您可以添加if條件來檢查封面是否爲空。 – Nitesh

相關問題