2012-03-09 78 views
2

POST EDITED加入LINK图像调整asp.net MVC应用程序

阅读图像一个很好的职位调整[这里] [1]在asp.net mvc的。

http://dotnetslackers.com/articles/aspnet/Testing-Inbound-Routes.aspx

我需要这个逻辑来为例子,我已经在CDN上传的图片是在CDN also.Say上传的图片工作,现在我想从我的控制器,把它拿来和调整it.Also图像不应该保存在我的服务器上,因为它消耗宝贵的资源并不是一个好主意。图像必须从CDN读取并重新调整大小,而不必将其保存在服务器本地。我们如何使用上面的帖子。

感谢, S.

+0

您错过了该帖子的链接。你可以添加它吗? – Diego 2012-03-09 20:03:10

回答

1

可以使用GDI +功能System.Drawing命名空间

Bitmap newBitmap = new Bitmap(destWidth, destHeight); 
Graphics g = Graphics.FromImage((Image)newBitmap); 
g.InterpolationMode = InterpolationMode.HighQualityBicubic; 

g.DrawImage(sourceImage, 0, 0, destWidth, destHeight); 
g.Dispose(); 
1

下面是我使用。很棒。

private static Image ResizeImage(Image imgToResize, Size size) 
    { 
     int sourceWidth = imgToResize.Width; 
     int sourceHeight = imgToResize.Height; 

     float nPercent = 0; 
     float nPercentW = 0; 
     float nPercentH = 0; 

     nPercentW = ((float)size.Width/(float)sourceWidth); 
     nPercentH = ((float)size.Height/(float)sourceHeight); 

     if (nPercentH < nPercentW) 
      nPercent = nPercentH; 
     else 
      nPercent = nPercentW; 

     int destWidth = (int)(sourceWidth * nPercent); 
     int destHeight = (int)(sourceHeight * nPercent); 

     Bitmap b = new Bitmap(destWidth, destHeight); 
     Graphics g = Graphics.FromImage((Image)b); 
     g.InterpolationMode = InterpolationMode.HighQualityBicubic; 

     g.DrawImage(imgToResize, 0, 0, destWidth, destHeight); 
     g.Dispose(); 

     return (Image)b; 
    } 
9

如果你使用ASP.Net MVC3,你可以尝试一下新的帮手--WebImage。

这是我的测试代码。

public ActionResult GetImg(float rate) 
    { 
     WebClient client = new WebClient(); 
     byte[] imgContent = client.DownloadData("ImgUrl"); 
     WebImage img = new WebImage(imgContent); 
     img.Resize((int)(img.Width * rate), (int)(img.Height * rate)); 
     img.Write(); 

     return null; 
    } 
相关问题