按比例缩放图片方法

按比例缩放图片方法

public static Bitmap GetThumbnail(Bitmap b, int destHeight, int destWidth)   
        {           
            System.Drawing.Image imgSource = b;      
            System.Drawing.Imaging.ImageFormat thisFormat = imgSource.RawFormat;  
            int sW = 0, sH = 0;          
            // 按比例缩放           
            int sWidth = imgSource.Width;
            int sHeight = imgSource.Height;
            if (sHeight > destHeight || sWidth > destWidth) 
            {               
                if ((sWidth * destHeight) > (sHeight * destWidth))    
                {                 
                    sW = destWidth;    
                    sH = (destWidth * sHeight) / sWidth;  
                }               
                else           
                {           
                    sH = destHeight;    
                    sW = (sWidth * destHeight) / sHeight;    
                }           
            }           
            else        
            {          
                sW = sWidth;  
                sH = sHeight;  
            }    
            Bitmap outBmp = new Bitmap(destWidth, destHeight);  
            Graphics g = Graphics.FromImage(outBmp);      
            g.Clear(Color.Transparent);         
            // 设置画布的描绘质量         
            g.CompositingQuality = CompositingQuality.HighQuality; 
            g.SmoothingMode = SmoothingMode.HighQuality;       
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;    
            g.DrawImage(imgSource, new Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);     
            g.Dispose();      
            // 以下代码为保存图片时,设置压缩质量     
            EncoderParameters encoderParams = new EncoderParameters();  
            long[] quality = new long[1];      
            quality[0] = 100;      
            EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);   
            encoderParams.Param[0] = encoderParam;   
            imgSource.Dispose();         
            return outBmp;      
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值