2016-04-29 349 views
1

我正在以base64格式存儲的數據庫中檢索圖像。這裏我的要求是,我想將base64圖像url轉換爲用戶友好的url。我嘗試了很多解決方案,但沒有按預期得到。任何人都可以告訴我如何實現這一點。如何在ASP.NET中將base64圖像url轉換爲用戶友好的URL

例如: -

這是bas64

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAJACAYAAABlmtk2AAAgAElEQVR4Xu 3dQYoj5paEUdng7Zhemie1ipz00rwfg2nSUOPKvEdCdPD11IqreucPQZCT/u3j4+PPPx6P3x//D//vn8 fj389/dv/+9zxe/u9x//mt+ecvAvVH9DybvxvKhU//3/734+N//vrx42859K7s57/987v797/nBfJ/j/ vPb80/fxGoP6Ln2fzdUC58+jeARBCz/QAQEOP5IyDG80dAjOePgBjPHwEx3gBCQI33A1BBy+dvfprOXw Utn7/5aTp/FbR8A8j8ON0PgAnpQP7Ex+H8mZAO5E98HM6fCelAA4j4PNwPwA3lQv6i59n83VAu5C96ns 3fDeVCA0j0npDtB/AERDiRP+A9IZr/ExDhRP6A94Ro/k9AhBMNIMB7RrQfwDMU7zfyv9s9I5n/MxTvN/ K/2z0jmf8zFO83GkB3u6ck+wE8hfF8JP8z3VOC+T+F8Xwk/zPdU4L5P4XxfKQBdKZ7TrAfwHMcr1fyv8 o9J5f/cxyvV/K/yj0nl/9zHK9XGkBXuSfl+gE8CfJ4Jv8j3JNi+T8J8ngm/yPck2L5PwnyeKYBdIR7Vq 6/oieZ/N3Q7mQv+h5dsG/AeQ9OF9YKFAD6Pz8HKw/TEgH8ic+DufPhHRgwb8BRBWw8EKBGkDWAUnXH9H zbP5uKBfyFz3PLvg3gLwH5wsLBWoAnZ+fg/WHCelA/sTH4fyZkA4s+P/28fHx5x+Px+8k8abwP4/Hv59 f3b//PQ+Q/3vcf35r/vmLQP0RPc/m74Zy4dP//wBHqel8UTBFDwAAAABJRU5ErkJggg==" /> 

我想代替的base64

<img src="http://www.domainname.com/imagename.jpg /> 

如何實現這一目標的任何建議

+0

[基部64字符串轉換爲圖像,並且將其保存]的可能的複製( http://stackoverflow.com/questions/5400173/converting-a-base-64-string-to-an-image-and-saving-it) –

回答

0

他Base64編碼字符串參數首先通過調用Convert.FromBase64String方法將其轉換爲一個字節數組。接下來,我們根據生成的字節數組創建一個MemoryStream,它作爲Bitmap類的FromStream靜態方法的一個參數。

public Image Base64ToImage(string base64String) 
{ 
    // Convert Base64 String to byte[] 
    byte[] imageBytes = Convert.FromBase64String(base64String); 
    MemoryStream ms = new MemoryStream(imageBytes, 0, 
    imageBytes.Length); 

    // Convert byte[] to Image 
    ms.Write(imageBytes, 0, imageBytes.Length); 
    Image image = Image.FromStream(ms, true); 
    return image; 
} 
+0

在這一行上得到錯誤:Image image = Image.FromStream(ms,真正);錯誤:FromStream不是定義圖像 – Sri

+0

在ASP.Net中,您需要在Web窗體中具有一個System.Web.UI.WebControls.Image,併爲ImageUrl屬性分配要顯示的圖像的URL。 –

+0

你能否給我提供任何與問題有關的例子,因爲它不適合我 – Sri

0

爲了這個工作,你需要有一個像唯一的ID或名稱的圖像的標識符。

YourController下,所以創建一個動作

public void Image(string id){ 
    var base64String="";// get from id 
    byte[] bytes = Convert.FromBase64String(base64String); 

    Image image; 
    Response.ContentType = "image/jpeg"; 
    using (MemoryStream ms = new MemoryStream(bytes)) 
    { 
     image = Image.FromStream(ms); 
     image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); 
    } 
} 

現在RouteConfig.cs新路由添加到路由頂部

routes.MapRoute(
       name: "ImageRoute", 
       url: "{id}.jpg", 
       defaults: new { controller = "YourController", action = "Image" } 
      ); 

但是我建議不要使用url: "{id}.jpg",因爲它可以很容易搞砸任何你目錄中的其他物理圖像。 url: "{controller}/{action}/{id}.jpg"

現在根據你的路線,你可以使用

< IMG SRC =「http://www.domainname.com/[id/name].jpg />

< IMG SRC =「http://www.domainname.com/YourController/Image/[id/name].jpg />