C#下的BMP图像压缩类

摘要:
可以把BMP文件压成任意质量的JPEG,在.netframework2.0下编译通过。时间原因没有写注释,还是介绍一下吧:只有一个没有重载的构造函数,参数是待压缩BMP文件的路径,还有一个长整形的质量参数,在0-100之间取值。调用encodeImg()就可以完成压缩工作了,需要一个JPEG文件输出路径的参数。如果你要在你的C#工程里面用这个类,一定要把代码保存在ImageEncoder.cs文件里面。

这几天研究比较多,其中一个成果就是下面这个图像压缩类。可以把BMP文件压成任意质量的JPEG,在.net framework 2.0下编译通过。有时间的话我会把它写成可以压缩其他格式的类,其实改一下参数就可以了。

时间原因没有写注释,(不过这个类真够简单了)还是介绍一下吧:

只有一个没有重载的构造函数,参数是待压缩BMP文件的路径,还有一个长整形的质量参数,在0-100之间取值。

调用encodeImg()就可以完成压缩工作了,需要一个JPEG文件输出路径的参数。

如果你要在你的C#工程里面用这个类,一定要把代码保存在ImageEncoder.cs文件里面。当然你也可以把它编译成DLL文件。

就说这么多了,这个类算是非常简单的,网上有一个代码可以实现相同功能,不过那是一个C#命令行程序。我把它封装了一下,希望能够给大家带来一些方便! :-)

//Copyright @ xiedi,2006
//Mail to xiedidan@yeah.net if you have questions or good suggestions.
//SOME RIGHTS RESERVED. You can use this code freely WITH THIS COMMENT.

using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace UserLib.ImgEncoder
{
public class ImageEncoder
{
private String bitmapPath;
private String jpegPath;
private Bitmap bitmap;
private ImageCodecInfo codecInfo;
private EncoderParameters parameters;
private EncoderParameter parameter;
private Encoder encoder;

public ImageEncoder(String path, long quality)
{
this.bitmapPath = path;
this.bitmap = new Bitmap(this.bitmapPath);
this.codecInfo = GetEncoderInfo("image/jpeg");
this.encoder = Encoder.Quality;
this.parameters = new EncoderParameters(1);
this.parameter = new EncoderParameter(encoder, quality);
this.parameters.Param[0] = this.parameter;
}

public void encodeImg(String path)
{
this.jpegPath = path;
this.bitmap.Save(this.jpegPath, this.codecInfo, this.parameters);
}

private 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;
}
}
}

免责声明:文章转载自《C#下的BMP图像压缩类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇03生成微博授权的url接口(再也没有你了)xshell连接linux,切换焦点,自动执行ctrl+c下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring Boot 连接MySql数据库

Spring Boot 以后也许会成为入门Spring的首选! 记一下Spring Boot 成功连接Mysql数据库的方法步骤! 一、新建Maven工程,不全Maven所需文件夹,在pom.xml引入SpringBoot的依赖包!可以参照:http://www.cnblogs.com/liangblog/p/5207855.html 二、有两种方法与数据...

数据加密之RijndaelManaged加密

1 #region RijndaelManaged加密 2 /// <summary> 3 /// 加密数据 4 /// </summary> 5 /// <param name="Text">要加密的内容</param>...

(转)Asp.Net(C#) XML+Xslt转Excel的解决方案

1. 新建一个Excel文档,并填写表头与两行左右的内容,然后另存为XML表格 格式 并修改成Xslt模板;2. 将要导入的数据生成XML格式文档;3. 通过Xslt模板将数据生成,并设定Response.ContentType = "application/vnd.ms-excel"; 4. 刷新输出页保存文件即为Excel格式的文档 ExportCar...

PerformanceCounter 基本介绍以及示例方法

一 PerformanceCounter 基本介绍 1 简单介绍 表示 Windows NT 性能计数器组件 命名空间:System.Diagnostics 程序集:System(在 system.dll 中) 2 构造函数(只介绍本文要用到的) PerformanceCounter (String, String, String) 功能: 初始化 P...

org.apache.commons.httpclient工具类(封装的HttpUtil)

import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOEx...

swift-字典

swift字典 在swift中,key:key值一定是可hash的,一定是独一无二的,swift的基本数据类型(String,Int,Float)都是可哈希的,所以都可以作为key值。 value:没有要求 直接上代码了,注释给大家标的很明白 //创建字典并赋值 let dict = ["name":"xiaoyu","age":12] l...