2013-07-28 7 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 Forms, я полагаю, потому что у меня есть проблемы с ними.

Я не уверен, какое решение имеет наибольший смысл. Может ли кто-нибудь дать мне несколько указателей?

+1

Какие у вас проблемы? – Shaharyar

ответ

1

Использование System.Windows.Controls.Image для отображения изображений в пользовательском интерфейсе. Вы должны установить его свойство Source, чтобы предоставлять данные изображения для отображения в пользовательском интерфейсе.

// 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; 

Затем вы можете добавить/поместить этот элемент управления изображения в пользовательский интерфейс.

+0

ОК! Я понял! У меня просто проблема, когда у песни нет обложки, но я исправил ее с помощью try-catch. Большое спасибо! –

+1

Да, вы можете добавить условие if, чтобы проверить, является ли обложка нулевой. – Nitesh