2011-01-27 12 views
1

私はmvc2を使用しています。コントローラーには、例えばShowSmallImage)のようなアクションを使用したいと思います。ブラウザに出力が画像であるwww.url.com/ShowSmallImageと入力してください。私は、ブラウザでのみSystem.Drawing.Bitmapを得る結果C#を使って画像を表示する

public Bitmap CreateThumbnail() 
     { 
      Image img1 = Image.FromFile(@"C:...\Uploads\Photos\178.jpg"); 

      int newWidth = 100; 
      int newHeight = 100; 
      double ratio = 0; 

      if (img1.Width > img1.Height) 
      { 
       ratio = img1.Width/(double)img1.Height; 
       newHeight = (int)(newHeight/ratio); 
      } 
      else 
      { 
       ratio = img1.Height/(double)img1.Width; 
       newWidth = (int)(newWidth/ratio); 
      } 

      //a holder for the result 
      Bitmap result = new Bitmap(newWidth, newHeight); 

      //use a graphics object to draw the resized image into the bitmap 
      using (Graphics graphics = Graphics.FromImage(result)) 
      { 
       //set the resize quality modes to high quality 
       graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; 
       graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
       graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
       //draw the image into the target bitmap 
       graphics.DrawImage(img1, 0, 0, result.Width, result.Height); 
      } 

      return result; 
     } 

私はこのような何かを試してみました。私は...私は、ページの応答/コンテンツタイプを設定する必要がありますが、それを行う方法見当がつかない

おかげで、
イル

+0

実際にこれをレスポンスストリームに書き込んでいますか?ここでやっているのは画像操作だけです。 –

+0

コントローラー内。私は最初に操作を行い、次にサムネイルを表示したい –

答えて

3

fileresultを作成し、&が設定されたビットマップへのストリームを返すを想定しますコンテンツの種類:コントローラで

private FileResult RenderImage() 
    { 
     MemoryStream stream = new MemoryStream(); 
     var bitmap = CreateThumbnail(); 
     bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); 
     Byte[] bytes = stream.ToArray(); 
     return File(bytes, "image/png"); 

    } 
+0

うーん...これで空白のページしか得られない –

+0

CreateThumbnail()メソッドが正しく動作していますか? –

+0

got ...最後の行では、ストリームではなくバイトであると仮定します。return file(bytes、 "image/png");今それは動作します。どうもありがとう! –

1

、あなたがFileResultを返すActionを持つことができResourceController言います。ように

public FileResult Thumbnail() 
    { 
     var bitmap = // Your method call which returns a Bitmap 

     var ms = new MemoryStream(); 
     bitmap.Save(ms, ImageFormat.Png); 
     return new FileStreamResult(ms, "image/png"); 
    } 

http://www.mysite.com/Resource/Thumbnailを呼び出すことができます。

+0

私はbyteArrayをどのように構築するかについてはあまりよく分かりません。作成したこのアクションでこの現在の機能を使用できますか?どうも –

関連する問題