話不多說,請看代碼:
/// <summary>    /// 根據(jù)指定尺寸得到按比例縮放的尺寸,返回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">壓縮質(zhì)量 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();      //以下代碼為保存圖片時,設(shè)置壓縮質(zhì)量      EncoderParameters ep = new EncoderParameters();      long[] qy = new long[1];      qy[0] = flag;//設(shè)置壓縮的比例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();      }    }以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持武林網(wǎng)!
新聞熱點
疑難解答
圖片精選