【问题标题】:Show mp3 artwork in picturebox C# [closed]在图片框 C# 中显示 mp3 图稿 [关闭]
【发布时间】:2016-01-30 15:02:43
【问题描述】:

我正在创建一个音乐播放器,在播放音乐时,我想在图片框中显示当前 mp3 的艺术作品。 我浏览了互联网,但找不到解决方案。 所以请帮忙。

编辑:我想从 ID3 标签中获取艺术品。

提前致谢

【问题讨论】:

  • 这个问题太笼统了。您是想从 ID3 标签中获取封面,还是从 mp3 文件旁边的文件中获取封面,或者从使用第三方服务的互联网等中获取封面。对于这样一个模糊的请求,我们无能为力。

标签: c#


【解决方案1】:

您可以使用taglib 轻松做到这一点。

我创建了一个简单的应用程序来展示这一点。应用程序包含以下内容:

  • 一个名为coverPictureBoxPictureBox
  • 一个名为browseButtonButton
  • OpenFileDialog 称为 openFileDialog

在我的主窗体的构造函数中,我将openFileDialog 的默认扩展名设置为 mp3 并防止选择多个文件:

openFileDialog.DefaultExt = "mp3";
openFileDialog.Filter = "MP3 Files (*.mp3)|*.mp3";
openFileDialog.Multiselect = false;

在按钮的Click 事件处理程序中:

private void coverButton_Click(object sender, EventArgs e)
{
    var dialogResult = openFileDialog.ShowDialog(this);

    if (dialogResult == DialogResult.OK)
    {
        TagLib.File file = TagLib.File.Create(openFileDialog.FileName);
        var mStream = new MemoryStream();
        var firstPicture = file.Tag.Pictures.FirstOrDefault();
        if (firstPicture != null)
        {
            byte[] pData = firstPicture.Data.Data;
            mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
            var bm = new Bitmap(mStream, false);
            mStream.Dispose();
            coverPictureBox.Image = bm;
        }
        else
        {
            // set "no cover" image
        }
    }
}

【讨论】:

  • 这是我数周以来一直在寻找的答案。
【解决方案2】:

您可以为此目的使用 TagLib。 https://github.com/mono/taglib-sharp

此问题包含一个答案,说明如何在 Windows 窗体图片框中显示 MP3 文件中的图片:C# mp3 ID tags with taglib - album art

这包含使用 WPF 时的正确方法:Using taglib to display the cover art in a Image box in WPF

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多