.net2.0 生成缩略图,与指定比例不等自动补白边的方法

// int_Height int_Width 指定高度和指定宽度 input_Imgfile,out_ImgFile为原图片和缩小后图片的路径。 
public   static   void  Thumbnail ( int  int_Width,  int  int_Height,  string  input_ImgFile,  string  out_ImgFile)    
        {    
   
            System.Drawing.Image oldimage 
=  System.Drawing.Image.FromFile(input_ImgFile);    
            
float  New_Width;  //  新的宽度    
             float  New_Height;  //  新的高度    
             float  Old_Width,Old_Height;  // 原始高宽    
             int  flat  =   0 ; // 标记图片是不是等比    
               
   
            
int  xPoint  =   0 ; // 若果要补白边的话,原图像所在的x,y坐标。    
             int  yPoint = 0 ;    
            
// 判断图片    
   
            Old_Width 
=  ( float )oldimage.Width;    
            Old_Height 
=  ( float )oldimage.Height;    
   
            
if  ((Old_Width  /  Old_Height)  >  (( float )int_Width  /  ( float )int_Height))  // 当图片太宽的时候    
            {    
                New_Height 
=  Old_Height  *  (( float )int_Width  /  ( float )Old_Width);    
                New_Width 
=  ( float )int_Width;    
                 
// 此时x坐标不用修改    
                yPoint  =  ( int )((( float )int_Height  -  New_Height)  /   2 );    
                flat 
=   1 ;    
            }    
            
else   if  ((oldimage.Width  /  oldimage.Height)  ==  (( float )int_Width  /  ( float )int_Height))    
            {    
                New_Width 
=  int_Width;    
                New_Height 
=  int_Height;    
            }    
            
else    
            {    
                New_Width 
=  ( int )oldimage.Width  *  (( float )int_Height  /  ( float )oldimage.Height);   // 太高的时候   
                New_Height  =  int_Height;    
                
// 此时y坐标不用修改    
                xPoint  =  ( int )((( float )int_Width  -  New_Width)  /   2 );    
                flat 
=   1 ;    
            }    
                
   
                       
//  ===缩小图片===    
            System.Drawing.Image thumbnailImage  =  oldimage.GetThumbnailImage(( int )New_Width, ( int )New_Height,  new  System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);    
            Bitmap bm 
=   new  Bitmap(thumbnailImage);    
   
                       
if  (flat  !=   0 )    
            {    
                Bitmap bmOutput 
=   new  Bitmap(int_Width,int_Height);    
                Graphics gc 
=  Graphics.FromImage(bmOutput);    
                SolidBrush tbBg 
=   new  SolidBrush(Color.White);    
                gc.FillRectangle(tbBg,
0 0 , int_Width, int_Height);  // 填充为白色    
   
  
                gc.DrawImage(bm,xPoint, yPoint, (
int )New_Width, ( int )New_Height);    
                bmOutput.Save(out_ImgFile);    
            }    
            
else    
            {    
                bm.Save(out_ImgFile);    
            }    
   
        }   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值