Вы не должны возвращать a System.Drawing.Image
, если вы также не добавите средство форматирования, которое знает, как преобразовать это в соответствующие байты, не сериализует себя как байты изображения, как вы ожидали.
Одно из возможных решений - вернуть HttpResponseMessage
с изображением, сохраненным в его содержимом (как показано ниже). Помните, что если вам нужен URL, который вы указали в вопросе, вам понадобится маршрут, который сопоставляет параметры {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;
}
}
Но, опять же, если вы делаете это во многих местах, использование метода форматирования может быть «рекомендуемым» способом. Как и почти все в программировании, ответ будет зависеть от вашего сценария.