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

本文介绍了一种图片缩放处理的方法,通过计算新的宽度和高度来保持图片的比例,并且能够根据目标尺寸进行适当的填充,确保缩放后的图片既不失真又能适配所需的尺寸。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//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,
00, int_Width, int_Height); //填充为白色    
   
  
                gc.DrawImage(bm,xPoint, yPoint, (
int)New_Width, (int)New_Height);    
                bmOutput.Save(out_ImgFile);    
            }    
            
else   
            {    
                bm.Save(out_ImgFile);    
            }    
   
        }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值