在 Web 服务中返回图像

Returning an image in a web service

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

我有这个 class :

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

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

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

The type name 'Image' could not be found in the namespace 'System.Drawing'. This type has been forwarded to assembly 'System.Drawing.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' Consider adding a reference to that assembly.

我看到我必须 return 一个 FileResult 但如果我不能使用 System.Drawing.Image 就无法创建结果 :

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

    FileResult result = ?;
    return result;
}

如何从字节数组创建 FileResult

您可以按如下方式进行。

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;
    }
}