5

我想在 Windows 窗体图片框中显示一首歌曲的专辑插图(通过 taglib-sharp 库访问)。我遇到的问题是 taglib-library 返回一个类型的图像,TagLib.IPicture而图片框需要一个类型的对象System.Drawing.Image

我已经在互联网上搜索了好几个小时,寻找一种从 to 转换的方法IPictureImage但无济于事。我拥有的最好的线索是:http: //msdn.microsoft.com/en-us/library/system.windows.forms.axhost.getpicturefromipicture.aspx,但我还没有看到如何实现这个的成功示例.

任何有关如何在这两种类型之间转换的帮助将不胜感激。注意:在这种情况下IPicture不类似。IPictureDisp

4

1 回答 1

12

我之前做过相反的事情 - 将现有的 .jpg 转换为 IPicture 以嵌入到 .mp3 文件中。我只是尝试扭转该操作,并在调整和测试之后,想出了这个:

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

感谢您的提问 - 我已经知道自己将如何使用它!

更新:这是另一种方式(我以前做过的.jpg到IPicture):

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[]))))
};
于 2013-08-12T04:19:40.117 回答