C# 在web服务中返回图像
我正在开发一个基本的Web服务。用户发送一个base 64字符串,服务器必须返回一个映像 我有这门课:C# 在web服务中返回图像,c#,asp.net-core,.net-core-2.1,C#,Asp.net Core,.net Core 2.1,我正在开发一个基本的Web服务。用户发送一个base 64字符串,服务器必须返回一个映像 我有这门课: public class myImage { public Byte[] Matrix { get; set; } public int Width { get; set; } public int Height { get; set; } } 矩阵是包含灰度像素值的字节数组 我看到了很多关于将字节数组转换为图像的主题(比如or),但对我来说并
public class myImage
{
public Byte[] Matrix { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
矩阵是包含灰度像素值的字节数组
我看到了很多关于将字节数组转换为图像的主题(比如or),但对我来说并不适用。我添加了对System.Drawing的引用,但出现错误:
在命名空间“System.Drawing”中找不到类型名称“Image”。该类型已被转发到程序集“System.Drawing.Common,版本=0.0.0.0,Sule=中性,公共密钥令牌=cc7b13ffCD2DDD51”,考虑添加对该程序集的引用。< /P>
我看到我必须返回一个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;
}
}
你可以这样做
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;
}
}
我认为它应该是一个
文件结果
请参阅:如果使用Asp核心文件结果有效,则可能会出现重复。检查下面的答案。不过我觉得少了点什么。确保base64的格式如下:data:image/png;base64,iVBORw0KGgoAAA ANSUHEUGAAAUAAAAFCAYAAACNBYBLAAAHELEQVQI12P4//8/W38GIAXDIBKE0DHXGLJNBAO9TXL0Y4OHWAAAABJRU 5ErkJggg==
不返回系统.绘图.Image
。该类用于操纵图像。您也不能只返回像素矩阵,您必须首先创建要返回的实际字节。一旦你有了实际的字节缓冲区或流,你就可以用returnfile(bytes,…)
或returnfile(stream,…)
返回它们,我认为它应该是FileResult
请参阅:如果使用Asp核心文件结果有效,则可能重复。检查下面的答案。不过我觉得少了点什么。确保base64的格式如下:data:image/png;base64,iVBORw0KGgoAAA ANSUHEUGAAAUAAAAFCAYAAACNBYBLAAAHELEQVQI12P4//8/W38GIAXDIBKE0DHXGLJNBAO9TXL0Y4OHWAAAABJRU 5ErkJggg==
不返回系统.绘图.Image
。该类用于操纵图像。您也不能只返回像素矩阵,您必须首先创建要返回的实际字节。一旦您有了实际的字节缓冲区或流,您就可以使用返回文件(字节,…)
或返回文件(流,…)