发布后加入了链接
在asp.net mvc。
中阅读关于图像大小调整[here] [1]的非常好的帖子http://dotnetslackers.com/articles/aspnet/Testing-Inbound-Routes.aspx
我需要这个逻辑来处理在cdn中上传的图像。例如,我已经在cdn中上传了一个图像,现在我想从我的控制器中取出它并调整它的大小。此外,图像不应该被保存在我的服务器中,因为它消耗宝贵的资源并不是一个好主意。图像必须从CDN读取并重新调整大小而不在本地保存在服务器中。如何使用上述帖子中给出的方法实现此目的。
谢谢, S上。
答案 0 :(得分: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;
}
答案 1 :(得分:1)
您可以使用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();
答案 2 :(得分: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;
}