帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

C#无损高质量压缩图片代码

本文实例为大家分享了C#无损高质量压缩图片的具体代码,供大家参考,具体内容如下

?

/// 无损压缩图片 

/// <param name="sFile">原图片</param> 

/// <param name="dFile">压缩后保存位置</param> 

/// <param name="dHeight">高度</param> 

/// <param name="dWidth"></param> 

/// <param name="flag">压缩质量(数字越小压缩率越高) 1-100</param> 

/// <returns></returns> 

 

public static bool GetPicThumbnail( string sFile, string dFile, int dHeight, int dWidth, int flag)

{

   System.Drawing.Image iSource = System.Drawing.Image.FromFile(sFile);

   ImageFormat tFormat = iSource.RawFormat;

   int sW = 0, sH = 0;

 

   //按比例缩放

   Size tem_size = new Size(iSource.Width, iSource.Height);

 

   if (tem_size.Width > dHeight || tem_size.Width > dWidth)

   {

     if ((tem_size.Width * dHeight) > (tem_size.Width * dWidth))

     {

       sW = dWidth;

       sH = (dWidth * tem_size.Height) / tem_size.Width;

     }

     else

     {

       sH = dHeight;

       sW = (tem_size.Width * dHeight) / tem_size.Height;

     }

   }

   else

   {

     sW = tem_size.Width;

     sH = tem_size.Height;

   }

 

   Bitmap ob = new Bitmap(dWidth, dHeight);

   Graphics g = Graphics.FromImage(ob);

 

   g.Clear(Color.WhiteSmoke);

   g.CompositingQuality = CompositingQuality.HighQuality;

   g.SmoothingMode = SmoothingMode.HighQuality;

   g.InterpolationMode = InterpolationMode.HighQualityBicubic;

 

   g.DrawImage(iSource, new Rectangle((dWidth – sW) / 2, (dHeight – sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel);

 

   g.Dispose();

   //以下代码为保存图片时,设置压缩质量 

   EncoderParameters ep = new EncoderParameters();

   long [] qy = new long [1];

   qy[0] = flag; //设置压缩的比例1-100 

   EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);

   ep.Param[0] = eParam;

   try

   {

     ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();

     ImageCodecInfo jpegICIinfo = null ;

     for ( int x = 0; x < arrayICI.Length; x++)

     {

       if (arrayICI[x].FormatDescription.Equals( "JPEG" ))

       {

         jpegICIinfo = arrayICI[x];

         break ;

       }

     }

     if (jpegICIinfo != null )

     {

       ob.Save(dFile, jpegICIinfo, ep); //dFile是压缩后的新路径 

     }

     else

     {

       ob.Save(dFile, tFormat);

     }

     return true ;

   }

   catch

   {

     return false ;

   }

   finally

   {

     iSource.Dispose();

     ob.Dispose();

   }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

dy(“nrwz”);

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《C#无损高质量压缩图片代码》
文章链接:https://www.admin99.cn/7581
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册