等比例缩放图片(C#)

时间:2022-01-04 02:21:39

private Bitmap ZoomImage(Bitmap bitmap, int destHeight, int destWidth)  

{  

    try  

    {  

        System.Drawing.Image sourImage = bitmap;  

        int width = 0, height = 0;  

        //按比例缩放             

        int sourWidth = sourImage.Width;  

        int sourHeight = sourImage.Height;  

        if (sourHeight > destHeight || sourWidth > destWidth)  

        {  

            if ((sourWidth * destHeight) > (sourHeight * destWidth))  

            {  

                width = destWidth;  

                height = (destWidth * sourHeight) / sourWidth;  

            }  

            else  

            {  

                height = destHeight;  

                width = (sourWidth * destHeight) / sourHeight;  

            }  

        }  

        else  

        {  

            width = sourWidth;  

            height = sourHeight;  

        }  

        Bitmap destBitmap = new Bitmap(destWidth, destHeight);  

        Graphics g = Graphics.FromImage(destBitmap);  

        g.Clear(Color.Transparent);  

        //设置画布的描绘质量           

        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;  

        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  

        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;  

        g.DrawImage(sourImage, new Rectangle((destWidth - width) / 2, (destHeight - height) / 2, width, height), 0, 0, sourImage.Width, sourImage.Height, GraphicsUnit.Pixel);  

        g.Dispose();  

        //设置压缩质量       

        System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();  

        long[] quality = new long[1];  

        quality[0] = 100;  

        System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);  

        encoderParams.Param[0] = encoderParam;  

        sourImage.Dispose();  

        return destBitmap;  

    }  

    catch  

    {  

        return bitmap;  

    }  

}  

标签:

原文地点:https://www.cnblogs.com/password1/p/8968952.html