如何将IPicture转换为图像 - .NET 4.5 TagLib Sharp

时间:2013-08-11 21:16:05

标签: .net-4.5 taglib-sharp

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

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

如何在这两种类型之间进行转换的任何帮助都将非常感激。 注意:IPicture在这种情况下与IPictureDisp不相似。

1 个答案:

答案 0 :(得分: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[]))))
};