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

C# 進(jìn)行圖片壓縮的示例代碼(對(duì)jpg壓縮效果最好)

 更新時(shí)間:2020年11月18日 09:13:58   作者:踏平扶桑  
這篇文章主要介紹了C# 進(jìn)行圖片壓縮的示例代碼,幫助大家更好的利用c# 處理圖片,提高辦公效率,感興趣的朋友可以了解下

直接上代碼

public static class ImageCompress
  {
    /// <summary>
    /// 圖片壓縮
    /// </summary>
    /// <param name="imagePath">圖片文件路徑</param>
    /// <param name="targetFolder">保存文件夾</param>
    /// <param name="quality">壓縮質(zhì)量</param>
    /// <param name="fileSuffix">壓縮后的文件名后綴(防止直接覆蓋原文件)</param>
    public static void CompressionImage(string imagePath, string targetFolder, long quality = 100, string fileSuffix = "compress")
    {
      if (!File.Exists(imagePath))
      {
        throw new FileNotFoundException();
      }
      if (!Directory.Exists(targetFolder))
      {
        Directory.CreateDirectory(targetFolder);
      }
      var fileInfo = new FileInfo(imagePath);
      var fileName = fileInfo.Name.Replace(fileInfo.Extension, "");
      var fileFullName = Path.Combine($"{targetFolder}", $"{fileName}_{fileSuffix}{fileInfo.Extension}");

      var imageByte = CompressionImage(imagePath, quality);
      var ms = new MemoryStream(imageByte);
      var image = Image.FromStream(ms);
      image.Save(fileFullName);
      ms.Close();
      ms.Dispose();
      image.Dispose();
    }
    private static byte[] CompressionImage(string imagePath, long quality)
    {
      using (var fileStream = new FileStream(imagePath, FileMode.Open))
      {
        using (var img =Image.FromStream(fileStream))
        {
          using (var bitmap = new Bitmap(img))
          {
            var codecInfo = GetEncoder(img.RawFormat);
            var myEncoder = Encoder.Quality;
            var myEncoderParameters = new EncoderParameters(1);
            var myEncoderParameter = new EncoderParameter(myEncoder, quality);
            myEncoderParameters.Param[0] = myEncoderParameter;
            using (var ms = new MemoryStream())
            {
              bitmap.Save(ms, codecInfo, myEncoderParameters);
              myEncoderParameters.Dispose();
              myEncoderParameter.Dispose();
              return ms.ToArray();
            }
          }
        }
      }
    }

    private static ImageCodecInfo GetEncoder(ImageFormat format)
    {
      var codecs = ImageCodecInfo.GetImageDecoders();
      return codecs.FirstOrDefault(codec => codec.FormatID == format.Guid);
    }
  }

調(diào)用方法(WPF為例)

private void Button_Click(object sender, RoutedEventArgs e)
    {
      var fileDialog = new OpenFileDialog();
      var fileSelect = "";
      if (fileDialog.ShowDialog(this)==true)
      {
        fileSelect = fileDialog.FileName;
      }
      if(string.IsNullOrWhiteSpace(fileSelect)) return;
      
      ImageCompress.CompressionImage(fileSelect,@"d:\",50);

    }

以上就是C# 進(jìn)行圖片壓縮的示例代碼(對(duì)jpg壓縮效果最好)的詳細(xì)內(nèi)容,更多關(guān)于c# 圖片壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#中的多線程多參數(shù)傳遞詳解

    C#中的多線程多參數(shù)傳遞詳解

    第一種解決方案的原理是:將線程執(zhí)行的方法和參數(shù)都封裝到一個(gè)類里面。通過實(shí)例化該類,方法就可以調(diào)用屬性來實(shí)現(xiàn)間接的類型安全地傳遞多個(gè)參數(shù)
    2014-01-01
  • Unity3D制作序列幀動(dòng)畫的方法

    Unity3D制作序列幀動(dòng)畫的方法

    這篇文章主要為大家詳細(xì)介紹了Unity3D制作序列幀動(dòng)畫的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Unity實(shí)現(xiàn)物體跟隨鼠標(biāo)移動(dòng)

    Unity實(shí)現(xiàn)物體跟隨鼠標(biāo)移動(dòng)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)物體跟隨鼠標(biāo)移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#中嵌入SQLite數(shù)據(jù)庫的簡單方法

    C#中嵌入SQLite數(shù)據(jù)庫的簡單方法

    本文給大家介紹的是C#中嵌入SQLite數(shù)據(jù)庫的簡單方法,十分的方便也很實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 詳解ASP.NET中Identity的身份驗(yàn)證代碼

    詳解ASP.NET中Identity的身份驗(yàn)證代碼

    這篇文章主要介紹了ASP.NET Identity 的“多重”身份驗(yàn)證代碼,以及實(shí)現(xiàn)的原理講解,需要的朋友參考一下。
    2017-12-12
  • C#隱藏主窗口的方法小結(jié)

    C#隱藏主窗口的方法小結(jié)

    這篇文章主要介紹了C#隱藏主窗口的方法,列舉了C#隱藏窗口的三種常用方法,涉及C#窗體操作的常用技巧,需要的朋友可以參考下
    2016-03-03
  • C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類MysqlHelper實(shí)例

    C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類MysqlHelper實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類MysqlHelper,實(shí)例分析了C#操作MySQL的常用技巧,并將其封裝入一個(gè)類中以方便調(diào)用,需要的朋友可以參考下
    2015-04-04
  • 經(jīng)典的委托排序(深入分析)

    經(jīng)典的委托排序(深入分析)

    本篇文章是對(duì)委托排序進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • .NET實(shí)現(xiàn)定時(shí)發(fā)送郵件代碼(兩種方式)

    .NET實(shí)現(xiàn)定時(shí)發(fā)送郵件代碼(兩種方式)

    經(jīng)常發(fā)郵件的朋友都知道,郵箱有個(gè)特殊功能,可以設(shè)定郵件發(fā)送時(shí)間,定時(shí)發(fā)送,這個(gè)功能是怎么實(shí)現(xiàn)的呢?接下來,小編給大家分享.NET實(shí)現(xiàn)定時(shí)發(fā)送郵件的代碼,有需要的朋友可以參考下
    2015-08-08
  • C#實(shí)現(xiàn)簡單的汽車租賃系統(tǒng)

    C#實(shí)現(xiàn)簡單的汽車租賃系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)汽車租賃系統(tǒng)的具體實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05

最新評(píng)論