欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#無損壓縮圖片

 更新時間:2017年04月13日 09:11:16   作者:漫天行  
本文主要介紹了C#無損壓縮圖片的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧

話不多說,請看代碼:

/// <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)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • 深入理解C#中常見的委托

    深入理解C#中常見的委托

    本篇文章是對C#中常見的委托進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • C#使用timer定時在屏幕上輸出信息的方法

    C#使用timer定時在屏幕上輸出信息的方法

    這篇文章主要介紹了C#使用timer定時在屏幕上輸出信息的方法,涉及C#中timer定時器的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • C#模式畫刷HatchBrush用法實例

    C#模式畫刷HatchBrush用法實例

    這篇文章主要介紹了C#模式畫刷HatchBrush用法,實例分析了模式畫刷HatchBrush繪圖的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#如何更改Word的語言設(shè)置

    C#如何更改Word的語言設(shè)置

    這篇文章主要為大家詳細介紹了C#如何更改Word的語言設(shè)置,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C#實現(xiàn)彈窗提示輸入密碼

    C#實現(xiàn)彈窗提示輸入密碼

    這篇文章主要為大家詳細介紹了C#實現(xiàn)彈窗提示輸入密碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#列表框、復選列表框、組合框的用法實例

    C#列表框、復選列表框、組合框的用法實例

    這篇文章主要介紹了C#列表框、復選列表框、組合框的用法,實例分析了在一個簡單存儲項目中列表框、復選列表框、組合框的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • C#中函數(shù)的創(chuàng)建和閉包的理解

    C#中函數(shù)的創(chuàng)建和閉包的理解

    這篇文章主要介紹了C#中函數(shù)的創(chuàng)建和閉包的理解,本文講解了動態(tài)創(chuàng)建函數(shù)、匿名函數(shù)不足之處、理解c#中的閉包、閉包的優(yōu)點等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 基于WPF實現(xiàn)一個簡單的音頻播放動畫控件

    基于WPF實現(xiàn)一個簡單的音頻播放動畫控件

    這篇文章主要介紹了如何利用WPF實現(xiàn)一個簡單的音頻播放動畫控件,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,需要的可以參考一下
    2022-07-07
  • 詳解c# 委托鏈

    詳解c# 委托鏈

    這篇文章主要介紹了c# 委托鏈的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C#中的委托和事件詳解

    C#中的委托和事件詳解

    本文詳細講解了C#中的委托和事件,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論