Вам не слід повертати 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;
}
}
Але знову ж таки, якщо ви робите це в багатьох місцях, проходження маршруту форматування може бути "рекомендованим" способом. Як майже все в програмуванні, відповідь буде залежати від вашого сценарію.