Изображение изменить размер приложения asp.net MVC - PullRequest
2 голосов
/ 09 марта 2012

ПОСЛЕ РЕДАКТИРОВАНИЯ ДОБАВЛЕНО ССЫЛКА

Прочитайте очень хороший пост по изменению размера изображения [здесь] [1] в asp.net mvc.

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

Мне нужна эта логика для работы с изображениями, которые также загружены в cdn. Скажем, например, я загрузил изображение в cdn, и теперь я хочу получить его из моего контроллера и изменить его размер. Также изображение не должносохраните его на моем сервере, так как это не будет хорошей идеей, поскольку оно потребляет ценный ресурс. Изображение необходимо прочитать из CDN и изменить его размер, не сохраняя его локально на сервере. Как этого добиться, используя методологию, приведенную в предыдущем посте.

Спасибо, С.

Ответы [ 3 ]

9 голосов
/ 10 марта 2012

Если вы используете 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 голос
/ 10 марта 2012

Вот что я использую. Прекрасно работает.

    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;
    }
1 голос
/ 10 марта 2012

Вы можете использовать функции 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...