C# 如何从控制器方法返回图像?

C# 如何从控制器方法返回图像?,c#,asp.net-mvc,C#,Asp.net Mvc,我想在mp3文件中使用TagLib获取mp3相册艺术。我正在使用该代码,它给出了System.Drawing.Bitmap。如何在网页中显示。我正在使用MVC var file12 = TagLib.File.Create(file); if (file12.Tag.Pictures.Length >= 1) { var bin = (byte[])(file12.Tag.Pictures[0].Data.Data); if (bin.Length > 0)

我想在mp3文件中使用TagLib获取mp3相册艺术。我正在使用该代码,它给出了
System.Drawing.Bitmap
。如何在网页中显示。我正在使用MVC

var file12 = TagLib.File.Create(file);

if (file12.Tag.Pictures.Length >= 1)
{
    var bin = (byte[])(file12.Tag.Pictures[0].Data.Data);
    if (bin.Length > 0)
    {
        Images = System.Drawing.Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(200, 200, null, IntPtr.Zero);
        album = file12.Tag.Album;
    }
}

请帮助我

将代码放入控制器方法中,图像将异步加载(在本例中,控制器方法接受文件名作为参数,可能不是您的情况):

方法将为您完成所有肮脏的工作。为了清楚起见,在这个例子中我省略了重新缩放,如果需要,只需复制并粘贴代码即可。请注意,当没有图像不可用时,您必须返回一些内容(默认缩略图?),您甚至可能返回HTTP错误,其中包括:

return HttpNotFound();
例如,您的HTML将如下所示:

<img
     src='@Url.Action("GetImage", new { file = "filenamehere.mp3" })'
     alt='thumbnail' />


请注意,这里我假设您的图像是JPG格式,如果不是,您可能需要将其转换为已知格式以返回正确的MIME类型(要从字节流中检测MIME类型,也可以在此处进行检查)。

您可以尝试使用Base64转换字符串通过Ajax或常规调用获取图像

仅供参考。


希望有帮助。

我已经为Mp3文件的显示相册选择了另一个选项

创建用于跟踪mp3文件相册艺术的Windows窗体应用程序

   var filename = TagLib.File.Create(file);
                        if (filename.Tag.Pictures.Length >= 1)
                        {
                            var bin = (byte[])(filename.Tag.Pictures[0].Data.Data);
                            if (bin.Length > 0)
                            {
                                Images = Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(800, 800, null, IntPtr.Zero);
                                PreviewPictureBox.Image = Images;
                                PreviewPictureBox.Image.Save("C:/Users/v-manshr/Desktop/MyMusicPlayer/MyMusicPlayer/AlbumImage/"+filename.Tag.Album+".jpg");
                                PreviewPictureBox.Visible = false;
                            }
                        }
这里PreviewPictureBox是WindWosFormComControl


现在我得到了一个mp3文件相册艺术,保存在一个位置。现在在MVC控制器中,我将所有文件复制到我的Visual Studio本地文件夹中。使用(file.copy)。现在在Viewr中显示。使用图像Src标记

Hmmmm是的,它可能会工作,但为什么他要做这么复杂的事情(base64编码)来显示图像呢?
   var filename = TagLib.File.Create(file);
                        if (filename.Tag.Pictures.Length >= 1)
                        {
                            var bin = (byte[])(filename.Tag.Pictures[0].Data.Data);
                            if (bin.Length > 0)
                            {
                                Images = Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(800, 800, null, IntPtr.Zero);
                                PreviewPictureBox.Image = Images;
                                PreviewPictureBox.Image.Save("C:/Users/v-manshr/Desktop/MyMusicPlayer/MyMusicPlayer/AlbumImage/"+filename.Tag.Album+".jpg");
                                PreviewPictureBox.Visible = false;
                            }
                        }