2011-01-27 5 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

gets ... 마지막 줄에서 스트림 대신 바이트가 있다고 가정합니다. 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를 빌드하는 방법을 잘 모르겠습니다. 내가 만든이 액션에있는 현재 기능을 사용할 수 있습니까? 고마워 –