返回带有两个参数(x和y表示调整大小)的图像的最佳方式是什么?
例如
~/api/image12345/200/200
将返回一个200x200jpg/png/或gif
我应该返回System.Drawing.Image
对象还是手动定义HTTPReponseMessage.Content
发布于 2012-09-18 07:49:24
您不应该返回System.Drawing.Image
,除非您还添加了一个知道如何将其转换为适当字节的格式化程序,该格式化程序不会像您预期的那样将自身序列化为图像字节。
一种可能的解决方案是返回一个HttpResponseMessage
,其中图像存储在其内容中(如下所示)。请记住,如果您想要问题中显示的网址,则需要一个映射{imageName}、{width}和{height}参数的路由。
public HttpResponseMessage Get(string imageName, int width, int height)
{
Image img = GetImage(imageName, width, height);
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;
}
}
但同样,如果您在许多地方这样做,使用格式化程序路线可能是“推荐”的方式。正如编程中的几乎所有事情一样,答案将取决于您的场景。
https://stackoverflow.com/questions/12467546
复制相似问题