C#的图片处理类,生成高质量缩略图,代码已测试过,效果很好

 

  public   static   void  MakeSmallPic( string  originalImagePath,  string  thumbnailPath,  int  width,  int  height,  string  mode)
        {

            
try
            {

                System.Drawing.Image originalImage 
=  System.Drawing.Image.FromFile(originalImagePath);

                
int  towidth  =  width;
                
int  toheight  =  height;

                
int  x  =   0 ;
                
int  y  =   0 ;
                
int  ow  =  originalImage.Width;
                
int  oh  =  originalImage.Height;

                
switch  (mode)
                {
                    
case   " HW " : // 指定高宽缩放(可能变形)                
                         break ;
                    
case   " W " : // 指定宽,高按比例                    
                        toheight  =  originalImage.Height  *  width  /  originalImage.Width;
                        
break ;
                    
case   " H " : // 指定高,宽按比例
                        towidth  =  originalImage.Width  *  height  /  originalImage.Height;
                        
break ;
                    
case   " Cut " : // 指定高宽裁减(不变形)                
                         if  (( double )originalImage.Width  /  ( double )originalImage.Height  >  ( double )towidth  /  ( double )toheight)
                        {
                            oh 
=  originalImage.Height;
                            ow 
=  originalImage.Height  *  towidth  /  toheight;
                            y 
=   0 ;
                            x 
=  (originalImage.Width  -  ow)  /   2 ;
                        }
                        
else
                        {
                            ow 
=  originalImage.Width;
                            oh 
=  originalImage.Width  *  height  /  towidth;
                            x 
=   0 ;
                            y 
=  (originalImage.Height  -  oh)  /   2 ;
                        }
                        
break ;
                    
default :
                        
break ;
                }

                
// 新建一个bmp图片
                System.Drawing.Image bitmap  =   new  System.Drawing.Bitmap(towidth, toheight);

                
// 新建一个画板
                System.Drawing.Graphics g  =  System.Drawing.Graphics.FromImage(bitmap);

                
// 设置高质量插值法
                g.InterpolationMode  =  System.Drawing.Drawing2D.InterpolationMode.High;

                
// 设置高质量,低速度呈现平滑程度
                g.SmoothingMode  =  System.Drawing.Drawing2D.SmoothingMode.HighQuality;

                
// 清空画布并以透明背景色填充
                g.Clear(System.Drawing.Color.Transparent);

                
// 在指定位置并且按指定大小绘制原图片的指定部分
                g.DrawImage(originalImage,  new  System.Drawing.Rectangle( 0 0 , towidth, toheight),
                    
new  System.Drawing.Rectangle(x, y, ow, oh),
                    System.Drawing.GraphicsUnit.Pixel);

                
try
                {
                    
// 以jpg格式保存缩略图
                    bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                
catch  (System.Exception e)
                {
                    
throw  e;
                }
                
finally
                {
                    originalImage.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                }
            }
            
catch
            {
                
throw ;
            }
        }

 

C#的图片处理类,生成高质量缩略图,代码已测试过,效果很好

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值