栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C# 进行图片压缩的示例代码(对jpg压缩效果最好)

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# 进行图片压缩的示例代码(对jpg压缩效果最好)

直接上代码

public static class ImageCompress
  {
    /// 
    /// 图片压缩
    /// 
    /// 图片文件路径
    /// 保存文件夹
    /// 压缩质量
    /// 压缩后的文件名后缀(防止直接覆盖原文件)
    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);
    }
  }

调用方法(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# 进行图片压缩的示例代码(对jpg压缩效果最好)的详细内容,更多关于c# 图片压缩的资料请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/121712.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号