Você não deve retornar um System.Drawing.Image
, a menos que também adicione um formatador que saiba como convertê-lo nos bytes apropriados não se serialize como os bytes da imagem como você esperaria.
Uma possível solução é retornar um HttpResponseMessage
com a imagem armazenada em seu conteúdo (conforme mostrado abaixo). Lembre-se de que, se você deseja o URL mostrado na pergunta, precisa de uma rota que mapeie os parâmetros {imageName}, {width} e {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;
}
}
Mas, novamente, se você estiver fazendo isso em muitos lugares, seguir o caminho do formatador pode ser o caminho "recomendado". Como quase tudo na programação, a resposta dependerá do seu cenário.