c# - 在 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
从我的字节数组创建一个?
解决方案
您可以按如下方式进行。
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;
}
}
推荐阅读
- php - phpredis zRange 返回
- c# - 使用 ASP.Net Core 2.0 C# 在 MongoDB 中插入实时数据
- r - 在包函数中使用 data.table 失败
- ruby - Protobuf 解析文本
- ios - 警告“将架构 arm64 映射到 x86_64”是什么意思?
- angular - 如何将购买的主题合并到 Angular 6 + Bootstrap 4 应用程序中
- sql-server-2008 - 在 SQL Server 2008 中使用命名空间解析 XML
- java - 通过通知最后一次交换发生的位置来改进冒泡排序
- node.js - 我可以在不要求客户在其浏览器中使用安全例外的情况下将 https 节点服务器部署到客户的计算机吗?
- bash - 将不同的值附加到列表中的偶数行和奇数行