Vous ne devriez pas renvoyer a System.Drawing.Image
, sauf si vous ajoutez également un formateur qui sait comment le convertir en octets appropriés ne se sérialise pas comme octets d'image comme vous vous en doutez.
Une solution possible consiste à renvoyer un HttpResponseMessage
avec l'image stockée dans son contenu (comme illustré ci-dessous). N'oubliez pas que si vous voulez l'URL que vous avez affichée dans la question, vous aurez besoin d'un itinéraire qui mappe 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 dans de nombreux endroits, emprunter la voie du formateur peut être la voie «recommandée». Comme presque tout en programmation, la réponse dépendra de votre scénario.