在 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;
}
}
我正在开发一个基本的网络服务。用户发送 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;
}
}