2012-11-13 83 views
2

我使用MVC4,Razor和C#。我想有服務,例如:從服務中獲取圖像

[WebGet] 
[OperationContract] 
public string Get(int id) 
{ 
    PictureManager m = new PictureManager(); 
    Picture p = m.Load(id); 
    return Convert.ToBase64String(p.Trunk); 
} 

其中:

public byte[] Trunk { get { return _trunk; } } 

而在客戶端,我想以同樣的方式使用它:

<img src="http://MyService/MyPictures/Get?id=21"> 

有同樣的能力?或者,也許我需要使用一些JavaScript來在客戶端顯示圖片?你能告訴我方向嗎?

+0

嘗試返回FileStreamResult – chrislhardin

回答

0

如果您的圖片是JPEG格式,請將您的代碼返回。

return "data:image/jpeg;base64," + Convert.ToBase64String(p.Trunk); 

Read here for the Data URI scheme.

+1

大部分的時間,這是一個非常糟糕的設計。這將生成圖像的base64版本,每次呈現html。例如,如果您使用兩次圖像,圖像將被渲染兩次。這將爲html頁面增加一個巨大的網絡過載。如果您創建了專用的圖像服務端點,您將能夠添加緩存,控制html標題等。 –

+0

您可以閱讀[this](http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/working-with -images-in-Asp-Net-mvc-framework /)來獲取下降樣本。 –

+0

非常感謝您的建議!這非常有幫助 – user1820916