图片上传有很多情况需要考虑,例如:生成缩略图、压缩尺寸、压缩质量、压缩尺寸质量、添加水印等等常见情况。最近遇到图片质量压缩不改变大小的问题,参考:听浪

#region 图片压缩

/// <summary>

/// 图片压缩(降低质量以减小文件的大小)

/// </summary>

/// <param name="srcBitMap">传入的Bitmap对象</param>

/// <param name="destFile">压缩后的图片保存路径</param>

/// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>

public static void Compress(Bitmap srcBitMap, string destFile, long level)

{

Stream s = new FileStream(destFile, FileMode.Create);

Compress(srcBitMap, s, level);

s.Close();

}

/// <summary>

/// 编码信息

/// </summary>

/// <param name="mimeType"></param>

/// <returns></returns>

private static ImageCodecInfo GetEncoderInfo(String mimeType)

{

int j;

ImageCodecInfo[] encoders;

encoders = ImageCodecInfo.GetImageEncoders();

for (j = 0; j < encoders.Length; ++j)

{

if (encoders[j].MimeType == mimeType)

return encoders[j];

}

return null;

}

/// <summary>

/// 图片压缩(降低质量以减小文件的大小)

/// </summary>

/// <param name="srcBitmap">传入的Bitmap对象</param>

/// <param name="destStream">压缩后的Stream对象</param>

/// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>

private static void Compress(Bitmap srcBitmap, Stream destStream, long level)

{

ImageCodecInfo myImageCodecInfo;

Encoder myEncoder;

EncoderParameter myEncoderParameter;

EncoderParameters myEncoderParameters;

// Get an ImageCodecInfo object that represents the JPEG codec.

myImageCodecInfo = GetEncoderInfo("image/jpeg");

// Create an Encoder object based on the GUID

// for the Quality parameter category.

myEncoder = Encoder.Quality;

// Create an EncoderParameters object.

// An EncoderParameters object has an array of EncoderParameter

// objects. In this case, there is only one

// EncoderParameter object in the array.

myEncoderParameters = new EncoderParameters(1);

// Save the bitmap as a JPEG file with 给定的 quality level

myEncoderParameter = new EncoderParameter(myEncoder, level);

myEncoderParameters.Param[0] = myEncoderParameter;

srcBitmap.Save(destStream, myImageCodecInfo, myEncoderParameters);

}

#endregion

参考:听浪 http://www.cnblogs.com/ainidewen/p/4556543.html

.Net上传图片压缩质量,不改变尺寸的更多相关文章

  1. 改变wordpress图片上传后的压缩质量

    WordPress 在图片上传后会默认压缩图片质量为原来的 90%,这样做的好处可以极大的加快页面的载入速度与缩小图片大小所占服务器空间. 如果希望 100% 原质量怎么办呢?如何禁止 WordPre ...

  2. layui中实现上传图片压缩

    一.关于js上传图片压缩的方法,百度有很多种方法,这里我参考修改了一下: function photoCompress(file, w, objDiv) { var ready = new FileR ...

  3. C#图片处理之: 另存为压缩质量可自己控制的JPEG

    处理图片时常用的过程是:读入图片文件并转化为Bitmap -> 处理此Bitmap的每个点以得到需要的效果 -> 保存新的Bitmap到文件使用C#很方便的就可以把多种格式的图片文件读到B ...

  4. java 上传图片压缩图片

    package com.bitspace.flame.util; import java.io.File; import java.awt.Image;import java.awt.image.Bu ...

  5. asp.net 图片质量压缩(不改变尺寸)

    private static ImageCodecInfo GetEncoderInfo(String mimeType) { int j; ImageCodecInfo[] encoders; en ...

  6. 压缩png质量不改变像素

    private static byte[] CompressionImage(Bitmap bitmap, Stream fileStream, long quality) { using (Syst ...

  7. 【转】JPG打包压缩后比原来尺寸还大

    作者:刘源链接:https://www.zhihu.com/question/40371280/answer/86262934来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  8. java 上传图片压缩

    public static void uploadFile(MultipartFile multfile, String filePath) throws Exception { File targe ...

  9. 【OpenCV开发】imread和imwrite的类型以及第三个参数关于图片压缩质量等

    本片参考博客:http://blog.csdn.net/poem_qianmo/article/details/20537737 基于OpenCV3.0,与原博客有出入. 在OpenCV1.0时代,基 ...

随机推荐

  1. linux记录每个用户执行的命令

    1.在/etc/profile中添加如下代码: #history USER_IP=`>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` HISTD ...

  2. JQ与JS等价代码

    选择器 //jquery var els = $(".el"); //原生方法 var els = document.querySelectorAll(".el" ...

  3. Spring Boot 16 条最佳实践

    Spring Boot是最流行的用于开发微服务的Java框架.在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于我的个人经验和一些熟知的Sp ...

  4. [jOOQ中文]3. 数据库版本管理工具Flyway

    https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...

  5. VB中的正则表达式

    RegExp对象提供简单的正则表达式支持功能. RegExp对象的用法:Function RegExpTest(patrn, strng)Dim regEx, Match, Matches ' 建立变 ...

  6. Download/Attach source-code/java-docs with maven dependencies

    I am using Maven in my projects from last couple of years, and the automatically downloading the Jar ...

  7. 分享 - 普通程序员如何转向AI方向

    原作者:计算机的潜意识 原文链接,内容稍有改动,侵删 1. 目的2. AI领域简介3. 学习方法4. 学习路线 0) 领域了解1) 知识准备2) 机器学习3) 实践做项目4) 深度学习5) 继续机器学 ...

  8. 迷你MVVM框架 avalonjs 学习教程5、显示隐藏控制

    今天的主角是ms-visible,它的效果类拟于jQuery的toggle,如果它后面跟着的表达式为真值时则显示它所在的元素,为假值时则隐藏.不过显示不是 display:none这么简单,众所周知, ...

  9. gorm中自己写sql的方法实现

    type Result struct { Total int } var result Result //当天修改作业的总时间:分钟 dao.DB(dao.HomeworkTable).Raw(&qu ...

  10. js的prototype(2)

    1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javasc ...