c# 图片按比例缩放

来源:互联网 发布:硫磺岛战役知乎 编辑:程序博客网 时间:2024/06/06 00:16
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;     
        }
0 0