Bạn không nên trả về a System.Drawing.Image
, trừ khi bạn cũng thêm một trình định dạng biết cách chuyển đổi nó thành các byte thích hợp không tự tuần tự hóa thành các byte hình ảnh như bạn mong đợi.
Một giải pháp khả thi là trả về một HttpResponseMessage
với hình ảnh được lưu trữ trong nội dung của nó (như hình bên dưới). Hãy nhớ rằng nếu bạn muốn có URL mà bạn đã hiển thị trong câu hỏi, bạn cần một tuyến đường ánh xạ các thông số {imageName}, {width} và {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;
}
}
Nhưng một lần nữa, nếu bạn đang làm điều này ở nhiều nơi, đi theo con đường định dạng có thể là cách "được khuyến nghị". Như hầu hết mọi thứ trong lập trình, câu trả lời sẽ phụ thuộc vào kịch bản của bạn.