Bạn không nên trả lại System.Drawing.Image
, trừ khi bạn cũng thêm trình định dạng biết cách chuyển đổi thành các byte thích hợp không tự tuần tự hóa như byte hình ảnh như bạn mong đợi.
Một giải pháp có thể là trả lại một HttpResponseMessage
với hình ảnh được lưu trữ trong nội dung của nó (như được hiển thị bên dưới). Hãy nhớ rằng nếu bạn muốn URL bạn đã hiển thị trong câu hỏi, bạn cần một tuyến đường ánh xạ các tham 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, định tuyến đường định dạng có thể là cách "được khuyến nghị". Như hầu như tất cả 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.
Kiểm tra câu trả lời của tôi ở đây: http://stackoverflow.com/a/20888749/64334 –