Сжать / Миниатюра изображения после загрузки файла в c # .net - PullRequest
1 голос
/ 23 января 2011

Я хочу, чтобы пользователь загружал 2 МБ изображения, затем из этого изображения я хочу создать 1 миниатюру изображения. Чтобы уменьшить его размер, чтобы я мог получить скорость при загрузке. так как моя страница листинга содержит много изображений. так что я получаю много времени загрузки.

Так вы можете сказать мне, как я могу сжать изображение или получить эскиз изображения ???

1 Ответ

1 голос
/ 23 января 2011

Вы можете сделать что-то вроде этого:

public static Bitmap CreateThumbnail(string filename, int width, int height)
{

    Bitmap bmpOut = null;
    try
    {
        Bitmap loBMP = new Bitmap(filename);
        ImageFormat loFormat = loBMP.RawFormat;

        decimal lnRatio;
        int lnNewWidth = 0;
        int lnNewHeight = 0;

        //*** If the image is smaller than a thumbnail just return it
        if (loBMP.Width < width && loBMP.Height < height)
            return loBMP;

        if (loBMP.Width > loBMP.Height)
        {
            lnRatio = (decimal)width / loBMP.Width;
            lnNewWidth = width;
            decimal lnTemp = loBMP.Height * lnRatio;
            lnNewHeight = (int)lnTemp;
        }

        else
        {
            lnRatio = (decimal)height / loBMP.Height;
            lnNewHeight = height;
            decimal lnTemp = loBMP.Width * lnRatio;
            lnNewWidth = (int)lnTemp;

        }

        bmpOut = new Bitmap(lnNewWidth, lnNewHeight);
        Graphics g = Graphics.FromImage(bmpOut);
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight);
        g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight);

        loBMP.Dispose();
    }
    catch
    {
        return null;
    }
    return bmpOut;
}

Это всего лишь прототип, но вы можете использовать его для своего проекта

...