在c#.net上传文件后压缩/缩略图图像

时间:2011-01-23 08:17:11

标签: c# asp.net image image-processing file-upload

我希望假设用户上传2 MB图像然后从该图像我想生成1个缩略图图像。 为了减小它的尺寸,我可以加快速度。 因为我的列表页面包含许多图像。所以我的加载时间很长。

你能告诉我如何压缩图像或获取缩略图图像

1 个答案:

答案 0 :(得分:1)

您可以这样做:

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;
}

只是原型,但您可以将它用于您的项目