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

直接上代码

public static class ImageCompress
  {
    /// <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 = 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# 图片压缩的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#无损压缩图片

    话不多说,请看代码: /// <summary> /// 根据指定尺寸得到按比例缩放的尺寸,返回true表示以更改尺寸 /// </summary> /// <param name="picWidth">图片宽度</param> /// <param name="picHeight">图片高度</param> /// <param name="specifiedWidth&quo

  • C#无损高质量压缩图片实现代码

    最近,项目上涉及到了图像压缩,发现原有的图像压缩功能,虽然保证了图像的大小300K以内,但是压缩后的图像看的不在清晰,并且,限定了图片的Height或者是Width. 在CSDN上看到了一个压缩算法:C#无损高质量压缩图片代码 进过测试这个算法,发现,将原始图像的大小进行对半处理,然后迭代跳转压缩质量参数,可以得到不错的效果. 修改后的算法如下: /// <summary> /// 无损压缩图片 /// </summary> /// <param name="sFi

  • C#图片截取压缩(百分比压缩/大小压缩)实现代码

    前端时间朋友要传一些图片给我,全是大图,考虑到网速的限制,让他处理下图片大小再给我,这厮居然不知道用什么工具. 为了娱乐写了个截取图片和压缩图片你的小工具 1.按照百分比截图 复制代码 代码如下: View Code /// <summary> /// 按照比例缩小图片 /// </summary> /// <param name="srcImage">要缩小的图片</param> /// <param name="per

  • C#图片压缩的实现方法

    一般在web应用中,对客户端提交上来的图片肯定需要进行压缩的.尤其是比较大的图片,如果不经过压缩会导致页面变的很大,打开速度比较慢,当然了如果是需要高质量的图片也得需要生产缩略图. 下面贴出我自己琢磨的图片压缩算法,首先这个是未经优化的简单实现: 复制代码 代码如下: public static System.Drawing.Image GetImageThumb(System.Drawing.Image sourceImg, int width, int height)        {   

  • C#无损高质量压缩图片代码

    本文实例为大家分享了C#无损高质量压缩图片的具体代码,供大家参考,具体内容如下 /// 无损压缩图片 /// <param name="sFile">原图片</param> /// <param name="dFile">压缩后保存位置</param> /// <param name="dHeight">高度</param> /// <param name="

  • C#图片切割、图片压缩、缩略图生成代码汇总

    本文为大家整理了C#图片切割.图片压缩.缩略图生成的实现代码,大家可以收藏,方便以后使用,具体内容如下 /// 图片切割函数 /// </summary> /// <param name="sourceFile">原始图片文件</param> /// <param name="xNum">在X轴上的切割数量</param> /// <param name="yNum">在Y轴

  • asp.net(C#)压缩图片,可以指定图片模板高宽

    复制代码 代码如下: //生成缩略图函数 //顺序参数:源图文件流.缩略图存放地址.模版宽.模版高 //注:缩略图大小控制在模版区域内 public static void MakeSmallImg(System.IO.Stream fromFileStream, string fileSaveUrl, System.Double templateWidth, System.Double templateHeight) { //从文件取得图片对象,并使用流中嵌入的颜色管理信息 System.Dr

  • C#实现对图片文件的压缩、裁剪操作实例

    本文实例讲述了C#对图片文件的压缩.裁剪操作方法,在C#项目开发中非常有实用价值.分享给大家供大家参考.具体如下: 一般在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强人意. 于是采用C#为我们提供的图像编辑功能,实现一站式上传,通过程序生成所需大小.尺寸的目标图片. 具体步骤如下: 先说图片压缩: 第一步:需要读取一个图片文件,读取方法: //

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

    直接上代码 public static class ImageCompress { /// <summary> /// 图片压缩 /// </summary> /// <param name="imagePath">图片文件路径</param> /// <param name="targetFolder">保存文件夹</param> /// <param name="qualit

  • vue使用exif获取图片旋转,压缩的示例代码

    <template> <div> <input type="file" id="upload" accept="image" @change="upload" /> </div> </template> <script> export default { data() { return { picValue:{}, headerImage:'' }; },

  • vue使用exif获取图片经纬度的示例代码

    我上一篇文章写了怎么压缩图片和旋转.这篇写一下怎么看图片的经纬度 注意!!! 只有原图有大量的元数据信息.通过拍照软件如:b612等,拍摄的照片是软件处理过的,所以一定要使用原图来擦查询 下面贴以下代码. <template> <div> <input type="file" id="upload" accept="image" @change="upload" /> <span>

  • 鼠标滚轮改变图片大小的示例代码

    鼠标滚轮改变图片大小的示例代码<script> function onWheelZoom(obj){         zoom = parseFloat(obj.style.zoom);         tZoom = zoom + (event.wheelDelta>0 ? 0.05 : -0.05);         if( tZoom > 1 || tZoom<0.1 ) return true;         obj.style.zoom=tZoom;       

  • vue实现图片滚动的示例代码(类似走马灯效果)

    上次写了一个简单的图片轮播,这个相当于在上面的一些改进.这个组件除了可以进行图片滚动外,也可以嵌入任何内容的标签进行滚动,里面用了slot进行封装. 父: <template> <div id="app"> <er-carousel-index :typeNumber=2 :pageNumber=3 :timeSpace=2 :duration=2 :isOrNotCircle="true" url="/src/js/inde

  • Java实现动态获取图片验证码的示例代码

    本文介绍了Java实现动态获取图片验证码的示例代码,分享给大家,具体如下: import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingEx

  • java poi导出图片到excel示例代码

    本文实例为大家分享了java使用poi导出图片到Excel的具体代码,供大家参考,具体内容如下 代码实现 Controller /** * 导出志愿者/人才数据 * @param talent_type * @return */ @RequestMapping("/exportData") public void exportData(Integer talent_type, HttpServletResponse response) { String fileId = UUID.ra

  • django在保存图像的同时压缩图像示例代码详解

    假设我们有一个非常简单的Post模型,它将是一个图像及其描述, from django.db import models class Post(models.Model): text = models.TextField() image = models.ImageField(upload_to='images/') 但是我们要优化图像大小,这将由我们Post的image字段指出. 这样做有充分的理由-它有助于更快地加载网站/应用程序并减少我们的服务器存储. 在使用Django之前,首先让我们简

  • Js逆向实现滑动验证码图片还原的示例代码

    本文列举两个例子:某象和某验的滑动验证 一.某验:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s 未还原图像: 还原后的图: 从服务端请求来的图片是打乱后的,给用户看的时候是完整的,这个过程肯定是运行了某段js代码,将打乱的图片进行还原操作.所以我们需要找到这段js,然后还原它的代码逻辑,实现图片的还原操作,找到缺口距离,实现滑动操作. 如果你仔细观察的话,你会发现还原后的图它是canvas生成出来的 那你应该会想到,那段

  • 基于Java的MathML转图片的方法(示例代码)

    Maven依赖: <dependency> <groupId>de.rototor.jeuclid</groupId> <artifactId>jeuclid-core</artifactId> <version>3.1.14</version> </dependency> 示例: @Test public void testMathMlToImg() throws IOException { //MathML

随机推荐