当前位置: 首页 > news >正文

C#压缩图片的方法

/// <summary>
/// 图片压缩
/// </summary>
/// <param name="imagePath">图片文件路径</param>
/// <param name="targetFolder">保存文件夹</param>
/// <param name="quality">压缩质量</param>
/// <param name="fileSuffix">压缩后的文件名后缀(防止直接覆盖原文件)</param>
public static void CompressionImage(string imagePath, string targetFolder, long quality, string fileSuffix = "Demo")
{if (!System.IO.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();
}/// <summary>
/// 设置图片质量
/// </summary>
/// <param name="imagePath"></param>
/// <param name="quality">范围0~100,越大质量越高</param>
/// <returns></returns>
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)){ImageCodecInfo codecInfo = GetEncoder(img.RawFormat);var myEncoder = System.Drawing.Imaging.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();}}}}
}/// <summary>
/// Guid
/// </summary>
/// <param name="format"></param>
/// <returns></returns>
private static ImageCodecInfo GetEncoder(ImageFormat format)
{var codecs = ImageCodecInfo.GetImageDecoders();return codecs.FirstOrDefault(codec => codec.FormatID == format.Guid);
}

调用方法:

CompressionImage("C:\\Users\\admin\\Desktop\\画图\\1.jpg", "C:\\Users\\admin\\Desktop\\画图\\Demo", 50, "Demo");
http://www.lryc.cn/news/207282.html

相关文章:

  • 安装 fcitx + 搜狗/谷歌输入法 之后导致 死机,重启后黑屏只有鼠标可以移动
  • Maven项目转为SpringBoot项目
  • C语言之预处理
  • css步骤条
  • [Hive] 常见函数
  • Mac用NTFS文件夹读写NTFS硬盘 NTFS能复制多大的文件
  • 【unity3D】Scroll Rect组件—制作下滑列表
  • 网络扫描与网络监听
  • Codeforces Round 904 (Div. 2) C
  • DBeaver连接数据库报错:Public Key Retrieval is not allowed 的解决方案
  • DeepFace【部署 04】轻量级人脸识别和面部属性分析框架deepface使用Docker部署CPU+GPU两个版本及cuDNN安装
  • 程序生活 - 减肥小记
  • 深度学习_4_实战_直线最优解
  • 《视觉SLAM十四讲》公式推导(三)
  • pnpm、npm、yarn的区别
  • 搞定蓝牙——第四章(GATT协议)
  • Go语言入门心法(十四): Go操作Redis实战
  • Java学习笔记(三)
  • Flutter笔记:GetX模块中不使用 Get.put 怎么办
  • 2023前端面试整理
  • 文化融合:TikTok如何弥合跨文化差异
  • asp.net core获取config和env
  • Git不常用命令(持续更新)
  • PostPreSql 数据库的一些用法
  • 小工具推荐:FastGithub的下载及使用
  • 硬件信息查看工具 EtreCheckpro mac中文版功能介绍
  • 宝塔Python3.7安装模块报错ModuleNotFoundError: No module named ‘Crypto‘解决办法
  • 优化改进YOLOv5算法:加入ODConv+ConvNeXt提升小目标检测能力——(超详细)
  • ElasticSearch安装、插件介绍及Kibana的安装与使用详解
  • JVM | 命令行诊断与调优 jhsdb jmap jstat jps