调整asp.net mvc应用程序的图像大小
本文关键字:图像 应用程序 asp net mvc 调整 | 更新日期: 2023-09-27 18:27:28
后编辑添加链接
在asp.net mvc中阅读一篇关于调整图像大小的文章。
http://dotnetslackers.com/articles/aspnet/Testing-Inbound-Routes.aspx
我需要这个逻辑来处理在cdn中上传的图像。举个例子,我已经在cdn中上传了一个图像,现在我想从我的控制器中获取它并调整它的大小。此外,图像不应该保存在我的服务器中,因为这不是一个好主意,因为它会消耗宝贵的资源。图像必须从CDN中读取并重新调整大小,而无需在服务器中本地保存。我们如何使用上面帖子中给出的方法来实现这一点。
谢谢,S.
如果您使用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;
}
您可以在System.Drawing命名空间中使用GDI+功能
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();
以下是我使用的内容。效果很好。
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;
}