好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#无损压缩图片

话不多说,请看代码:

?

/// <summary>

     /// 根据指定尺寸得到按比例缩放的尺寸,返回true表示以更改尺寸

     /// </summary>

     /// <param name="picWidth">图片宽度</param>

     /// <param name="picHeight">图片高度</param>

     /// <param name="specifiedWidth">指定宽度</param>

     /// /// <param name="specifiedHeight">指定高度</param>

     /// <returns>返回true表示以更改尺寸</returns>

     private bool GetPicZoomSize( ref int picWidth, ref int picHeight, int specifiedWidth, int specifiedHeight)

     {

       int sW = 0, sH = 0;

       Boolean isZoomSize = false ;

       //按比例缩放

       Size tem_size = new Size(picWidth, picHeight);

       if (tem_size.Width > specifiedWidth || tem_size.Height > specifiedHeight) //将**改成c#中的或者操作符号

       {

         if ((tem_size.Width * specifiedHeight) > (tem_size.Height * specifiedWidth))

         {

           sW = specifiedWidth;

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

         }

         else

         {

           sH = specifiedHeight;

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

         }

         isZoomSize = true ;

       }

       else

       {

         sW = tem_size.Width;

         sH = tem_size.Height;

       }

       picHeight = sH;

       picWidth = sW;

       return isZoomSize;

     }

     /// <summary>

     /// 无损压缩图片

     /// </summary>

     /// <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 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 = iSource.Width, sH = iSource.Height;

 

       GetPicZoomSize( ref sW, ref sH, dWidth, dHeight);

 

       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();

       }

     }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!

原文链接:http://HdhCmsTestcnblogs测试数据/tpfOfBlog/archive/2017/04/12/6700431.html

dy("nrwz");

查看更多关于C#无损压缩图片的详细内容...

  阅读:49次