Vous ne devriez pas renvoyer un System.Drawing.Image
À moins que vous n'ajoutiez un formateur qui sache convertir les données en octets appropriés, l'image ne se sérialise pas en octets comme prévu.
Une solution possible est de renvoyer un HttpResponseMessage
avec l'image stockée dans son contenu (comme indiqué ci-dessous). Rappelez-vous que si vous voulez l'URL que vous avez montrée dans la question, vous avez besoin d'une route qui associe les paramètres {imageName}, {width} et {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;
}
}
Mais encore une fois, si vous faites cela à de nombreux endroits, la voie du formatage peut être la voie "recommandée". Comme presque tout en programmation, la réponse dépendra de votre scénario.