คุณไม่ควรส่งคืน 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;
}
}
แต่อีกครั้งหากคุณทำเช่นนี้ในหลาย ๆ ที่การไปยังเส้นทางฟอร์แมตเตอร์อาจเป็นวิธีที่ "แนะนำ" เกือบทุกอย่างในการเขียนโปรแกรมคำตอบจะขึ้นอยู่กับสถานการณ์ของคุณ