2013-08-11 36 views
5

Tôi muốn hiển thị ảnh bìa album của một bài hát (được truy cập thông qua thư viện taglib-sharp) trong hộp hình Windows Forms. Vấn đề tôi đang gặp phải là thư viện taglib trả về một hình ảnh thuộc loại TagLib.IPicture trong khi hộp hình yêu cầu một đối tượng kiểu System.Drawing.Image.Làm thế nào để chuyển đổi IPicture sang hình ảnh - .NET 4.5 TagLib Sharp

Tôi đã lùng sục Internet trong nhiều giờ, tìm cách chuyển đổi từ số IPicture thành Image nhưng không có kết quả. Dẫn đầu tốt nhất tôi có là: http://msdn.microsoft.com/en-us/library/system.windows.forms.axhost.getpicturefromipicture.aspx, nhưng tôi vẫn chưa thấy một ví dụ thành công về cách thực hiện điều này.

Bất kỳ trợ giúp nào về cách chuyển đổi giữa hai loại này sẽ được đánh giá cao. Lưu ý: IPicture không tương tự với IPictureDisp trong trường hợp này.

Trả lời

10

Tôi đã làm điều ngược lại trước khi - chuyển một tệp .jpg hiện có thành IPicture để nhúng trong tệp .mp3. Tôi vừa cố gắng đảo ngược hoạt động đó và sau khi tinh chỉnh và thử nghiệm, đã đưa ra điều này:

TagLib.File tagFile = TagLib.File.Create(mp3FilePath); 
MemoryStream ms = new MemoryStream(tagFile.Tag.Pictures[0].Data.Data); 
System.Drawing.Image image = System.Drawing.Image.FromStream(ms); 

Cảm ơn câu hỏi - Tôi đã biết cách tôi sẽ sử dụng bản thân này!

Cập nhật: Đây là cách khác (.jpg để IPicture mà tôi đã thực hiện trước đó):

tagFile.Tag.Pictures = new TagLib.IPicture[] 
{ 
    new TagLib.Picture(new TagLib.ByteVector((byte[])new System.Drawing.ImageConverter().ConvertTo(System.Drawing.Image.FromFile(jpgFilePath), typeof(byte[])))) 
}; 
Các vấn đề liên quan