首页 > 解决方案 > 在 Web 服务中返回图像

问题描述

我正在开发一个基本的网络服务。用户发送一个 base 64 字符串,并且服务必须返回一个图像。

我有这门课:

public class myImage
{    
    public Byte[] Matrix { get; set; }        
    public int Width { get; set; }
    public int Height { get; set; }
}

矩阵是一个包含灰度像素值的字节数组。

我看到了很多关于将字节数组转换为图像的主题(比如这个这个),但它对我不起作用。我添加了对 System.Drawing 的引用,但出现错误:

在命名空间“System.Drawing”中找不到类型名称“Image”。此类型已转发到程序集 'System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 考虑添加对该程序集的引用。

我看到我必须返回 aFileResult但如果我不能使用,我就无法创建结果System.Drawing.Image

[HttpPost]
[Route("CreateImage")]
public FileResult PostSealCryptItem([FromBody]String base64)
{
    MyImage myImg = createImg(base64);

    FileResult result = ?;
    return result;
}

如何FileResult从我的字节数组创建一个?

标签: c#asp.net-core.net-core-2.1

解决方案


您可以按如下方式进行。

public HttpResponseMessage  PostSealCryptItem([FromBody]String base64)
{
    MyImage myImg = createImg(base64);
    Image img = convertMyImgToImage(myImg);
    using(MemoryStream ms = new MemoryStream())
    {
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
        result.Content = new ByteArrayContent(ms.ToArray());
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");

        return result;
    }
}

推荐阅读