【问题标题】:Creating Image from byte[]从 byte[] 创建图像
【发布时间】:2017-07-06 18:39:08
【问题描述】:

我是一名 .NET 学生,试图学习如何从数据库中获取图像 (varbinary(MAX)) 并将其转换为图像文件。我已成功地将图像转换为 byte[] 并将其保存到数据库中。到目前为止,这是我试图恢复图像的代码:

    public IActionResult Index()
    {

        var kund = DbContext.Kunder.SingleOrDefault(p => p.KundId == 2);
        byte[] byteImage = kund.Bild;

        Image image = byteArrayToImage(byteImage);

        return View();
    }

    public Image byteArrayToImage(byte[] byteArrayIn)
    {
        MemoryStream ms = new MemoryStream(byteArrayIn);
        Image returnImage = Image.FromStream(ms);
        return returnImage;
    }

我知道的问题是 Visul Studio 告诉我们:

严重性代码描述项目文件行抑制状态 错误 CS0117“图像”不包含对 'FromStream' ImageToDB..NETCoreApp,Version=v1.0 D:\Kay\ASP.NET MVC\ImageToDatabase\ImageToDB\src\ImageToDB\Controllers\HomeController.cs 40 活动

这是来自命名空间 System.Drawing 的 Image 类(不是我自己的类):

namespace System.Drawing
{
    public abstract class Image
    {
        protected Image();
solution
        public delegate bool GetThumbnailImageAbort();
    }
}

我的依赖:

    {
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",

  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

当我查看网络上的不同示例时,我经常看到这个解决方案,但是当我尝试使用它时,FromStream 会变成红色波浪线。

如果您想从我的代码中看到更多内容,请告诉我,我会带来。

提前感谢所有帮助

【问题讨论】:

  • 当您说“这是 Image 类”时——您的意思是您已经创建了自己的 Image 类吗?如果是这样,请不要这样做...如果不是,请澄清。 (另外,请说明您的目标是哪个版本的 .NET。看起来是 .NET Core,但哪个版本?)
  • 问题是,您使用的是哪个图像。我看不到您的“使用”定义。你确定它是来自 System.Drawing 的图像吗?
  • 对不起。我没有创建那个类。会澄清这一点
  • @MAdeelKhalid 问题与 .NET Core 而不是 .NET 有关,它们是不同的,相同的答案并不适用于两者。

标签: c# arrays image-processing asp.net-core-mvc


【解决方案1】:

我破案了。我的解决方案。

   public IActionResult Index()
    {

        var kund = DbContext.Kunder.SingleOrDefault(p => p.KundId == 1);
        //byte[] byteArray = DbContext.Kunder.Find(kund).Bild;
        byte[] byteImage = kund.Bild;


        return File(byteImage, "image/jpg");
    }

查看

     @model ImageToDB.Models.Kund

 <img src="@Url.Action("RenderImage", new { id = Model.Bild})" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多