调整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 mvc应用程序的图像大小

如果您使用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;
    }