Non dovresti restituire a System.Drawing.Image
, a meno che tu non aggiunga anche un formattatore che sa come convertirlo nei byte appropriati non si serializza come byte dell'immagine come ti aspetteresti.
Una possibile soluzione è restituire un HttpResponseMessage
con l'immagine memorizzata nel suo contenuto (come mostrato di seguito). Ricorda che se desideri l'URL mostrato nella domanda, avresti bisogno di un percorso che mappi i parametri {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;
}
}
Ma di nuovo, se lo fai in molti posti, seguire il percorso del formattatore potrebbe essere il modo "consigliato". Come quasi tutto nella programmazione, la risposta dipenderà dal tuo scenario.