欢迎来到山村网

C#无损压缩图片代码

2019-03-09 11:54:31浏览:144 来源:山村网   
核心摘要:  话不多说,请看代码:  ///  /// 根据指定尺寸得到按比例缩放的尺寸,返回true表示以更改尺寸  ///  ///图片宽度  

  话不多说,请看代码:

  ///

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

  ///

  ///图片宽度

  ///图片高度

  ///指定宽度

  /// ///指定高度

  /// 返回true表示以更改尺寸

  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;

  }

  ///

  /// 无损压缩图片

  ///

  ///原图片

  ///压缩后保存位置

  ///高度

  ///宽度

  ///压缩质量 1-100

  ///

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

  }

  }

(责任编辑:豆豆)
下一篇:

交换机如何做最基本配置与管理

上一篇:

OneDNS怎么设置?

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com