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

C#無損壓縮圖片

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

話不多說,請看代碼:

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

相關(guān)文章

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

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

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

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

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

    C#模式畫刷HatchBrush用法實(shí)例

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

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

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

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

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

    C#列表框、復(fù)選列表框、組合框的用法實(shí)例

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

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

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

    基于WPF實(shí)現(xiàn)一個(gè)簡單的音頻播放動(dòng)畫控件

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

    詳解c# 委托鏈

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

    C#中的委托和事件詳解

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

最新評論