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

c# 代码
  1. //int_Height int_Width 指定高度和指定宽度 input_Imgfile,out_ImgFile为原图片和缩小后图片的路径。
  2. public static void Thumbnail (int int_Width, int int_Height, string input_ImgFile, string out_ImgFile)   
  3.         {   
  4.   
  5.             System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgFile);   
  6.             float New_Width; // 新的宽度   
  7.             float New_Height; // 新的高度   
  8.             float Old_Width,Old_Height; //原始高宽   
  9.             int flat = 0;//标记图片是不是等比   
  10.               
  11.   
  12.             int xPoint = 0;//若果要补白边的话,原图像所在的x,y坐标。   
  13.             int yPoint=0;   
  14.             //判断图片   
  15.   
  16.             Old_Width = (float)oldimage.Width;   
  17.             Old_Height = (float)oldimage.Height;   
  18.   
  19.             if ((Old_Width / Old_Height) > ((float)int_Width / (float)int_Height)) //当图片太宽的时候   
  20.             {   
  21.                 New_Height = Old_Height * ((float)int_Width / (float)Old_Width);   
  22.                 New_Width = (float)int_Width;   
  23.                  //此时x坐标不用修改   
  24.                 yPoint = (int)(((float)int_Height - New_Height) / 2);   
  25.                 flat = 1;   
  26.             }   
  27.             else if ((oldimage.Width / oldimage.Height) == ((float)int_Width / (float)int_Height))   
  28.             {   
  29.                 New_Width = int_Width;   
  30.                 New_Height = int_Height;   
  31.             }   
  32.             else  
  33.             {   
  34.                 New_Width = (int)oldimage.Width * ((float)int_Height / (float)oldimage.Height);  //太高的时候  
  35.                 New_Height = int_Height;   
  36.                 //此时y坐标不用修改   
  37.                 xPoint = (int)(((float)int_Width - New_Width) / 2);   
  38.                 flat = 1;   
  39.             }   
  40.                
  41.   
  42.                        // ===缩小图片===   
  43.             System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage((int)New_Width, (int)New_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);   
  44.             Bitmap bm = new Bitmap(thumbnailImage);   
  45.   
  46.                        if (flat != 0)   
  47.             {   
  48.                 Bitmap bmOutput = new Bitmap(int_Width,int_Height);   
  49.                 Graphics gc = Graphics.FromImage(bmOutput);   
  50.                 SolidBrush tbBg = new SolidBrush(Color.White);   
  51.                 gc.FillRectangle(tbBg,0, 0, int_Width, int_Height); //填充为白色   
  52.   
  53.  
  54.                 gc.DrawImage(bm,xPoint, yPoint, (int)New_Width, (int)New_Height);   
  55.                 bmOutput.Save(out_ImgFile);   
  56.             }   
  57.             else  
  58.             {   
  59.                 bm.Save(out_ImgFile);   
  60.             }   
  61.   
  62.         }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值