2017-12-06 17 views
0

私の詳細ビューでは、(私の場合はタスク)の詳細情報を表示するために、私はImageを表示します。現在、画像はビューに表示されません。どうしましたか?ここでバイト配列イメージの変換後にcore.net

は私のコードです:

コントローラで

マイActionResult

public ActionResult ShowImage(int id) 
{ 
    var task = _context.Task.SingleOrDefault(m => m.ID == id); 
    Image image = byteArrayToImage(task.Image); 
    return View(image); 
} 

コンバータ方式:

private Image byteArrayToImage(byte[] byteArrayIn) 
{ 
    MemoryStream ms = new MemoryStream(byteArrayIn); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 

そして、私のビュー:

<img src="@Url.Action("ShowImage", new { id = Model.ID })" class="img-responsive"/> 

ここれます印刷物リターンの画面。出力については画像を見てください。うまく見えます。

See the image for the output, it looks fine

+2

どのように 'img'タグがレンダリングされますか?あなたが解決しなければならないのは、壊れているイメージを要求しているHTMLか、イメージを取得しているコードかです。 ( '_context.Task'が何であるか分かりません。) –

+0

@JonSkeet IMGタグは、ビュー内で静止したままでレンダリングされません。すべてのタスクには独自のIDがあります。タスク内の情報を取得するには、私の場合はtask.Imageを使用します。そのため、_context.Taskを使用します。 – Thomas

+0

"IMGタグは私のビューに静的なままでレンダリングされません" - それが何を意味するのかははっきりしません。 'img'タグはタスクIDに基づいて変更する必要がありますので、実際に何を見ていますか?質問で明確にしてください。 –

答えて

0

あなたの行動からファイルを返すようにFileContentResultを使用する必要があります。

public IActionResult ShowImage(int id) 
{ 
    var task = _context.Task.SingleOrDefault(m => m.ID == id); 

    return File(task.Image, "image/jpeg"); //TODO: Set Content-Type appropriately 
} 

注:あなたの行動は、その後のように単純になりますが(私はを推測している)上記の中で適切にcontentTypeパラメータを設定する必要があり

  1. 上記のコードでは、ControllerBase.Fileメソッドを使用してFileContentResultを返します。コントローラがControllerまたはControllerBaseから継承されない場合は、FileContentResultを直接返す必要があります。
+1

あなたの解決策はightでした。魅力的な作品!ありがとうございました! – Thomas

関連する問題