01 2012 档案

Spring.NET框架简介及模块说明
摘要:Spring.NET框架简介及模块说明2009-08-04 15:17:42|分类:Spring.net|字号订阅Spring.NET框架包括很多功能,Spring.NET 1.0包括完整的IoC容器和AOP类库。1.1版加入Web、ORM和数据模块。Spring.NET的下载包中并不包含与其它类库(如NHibernate,TIBCO EMS,Anthem,和IIOP.NET)集成的模块,如果需要您可以单独下载。 Spring Framework天生丽质,因为其先进的架构和对一系列前沿开发思想的集成,使它从一产生就深得开发者欢迎,它将设计模式运用到了炉火纯青的地方,它的幽雅和魅力征服了许多JA 阅读全文

posted @ 2012-01-31 14:48 chennie 阅读(361) 评论(0) 推荐(0)

C#处理数码相片之马赛克的实现
摘要:很多图片处理的算法从原理上讲其实非常简单,难点往往在如何去写算法实现它,更加难的就是如何去优化实现的算法。虽说我一向认为程序员的效率比程序的效率更重要,但为了等处理一张自己拍摄的数码照片,溜出去买杯奶茶顺便再买张彩票回来发现还没算好,无论如何都是不能忍受的。马赛克算法很简单,说白了就是把一张图片分割成若干个val * val像素的小区块(可能在边缘有零星的小块,但不影响整体算法),每个小区块的颜色都是相同的。为了方便起见,我们不妨让这个颜色就用该区域最左上角的那个点的颜色。当然还可以有其他方法,比如取区块中间点的颜色,或区块中随机点的颜色作代表等等。下面的示意图就是取val=2的结果。原图像素 阅读全文

posted @ 2012-01-17 14:06 chennie 阅读(254) 评论(0) 推荐(0)

简单谈谈C#开发短信收发软件的原理 .
摘要:坛子里好像很多人对如何自己用C#开发手机短信有兴趣,正好我也做过这个,不妨今天就聊聊这个话题。要说这个功能的原理其实并不难(我可没说不复杂:P)。首先当然要把手机和PC连接起来。怎么连倒是次要的,数据线/红外/蓝牙什么的都可以。通常连接好以后PC会虚拟出一个串行通讯口,这下就好办了,我们只要把手机看作一个普通的串口终端设备来进行给它下命令就行了!当然,给手机发命令也是有标准的,通常是GSM AT指令集,不过各厂商可能会有自己的扩充。最后只要命令手机把编过码的短信(一般通用的是PDU格式)替你发出去就可以了!所以要实现这个功能牵涉到的知识点有点多:1 串口通讯2 GSM AT指令3 PDU编码( 阅读全文

posted @ 2012-01-17 14:04 chennie 阅读(529) 评论(0) 推荐(0)

使用C#的BitmapData .
摘要:我在前两篇图片处理的文章里几乎都用BitmapData来做图片处理的,那么这个东东究竟是个什么玩意儿呢?C#好是好,但处理图片时一个像素一个像素的操作像素可不是一般的慢,尤其是数码相机拍摄的大图片。其实Delphi也一样,但好在Delphi的Bitmap类提供了ScanLines,可以一行一行的读图,效率比较高。C#应该也有类似的东东。经过一番搜索,终于发现了BitmapData类。先看个例子,这是对一张位图的每个像素按FF取补,然后输出到一个新图(代码有点啰嗦,不过应该可以说明问题了)。int h = m_Bmp.Height;int w = m_Bmp.Width;Bitmap bmpOu 阅读全文

posted @ 2012-01-17 14:03 chennie 阅读(609) 评论(0) 推荐(0)

C#图片处理之:给你的图片打上LOGO .
摘要:做图片处理软件,肯定会遇到这样的需求:如何把一张图片放在另一张图片上,比如在大图片中打上公司或个人的Logo等等。其实原理很简单。假设我们有一张 800 * 600 的大图片(Bitmap b0),想在(10,10)的位置上打上Logo(Bitmap b1),Logo图片大小是 150 * 30。很简单,我们以大图片的(10,10)位置作为起始位置,做一个150 * 30 的矩形,把Logo图片整个替换这个矩形。老规矩,还是用BitmapData来帮助我们实现这个功能。// 取以大图(X,Y)为起点,w * h 的矩形区域BitmapData srcData = b0.LockBits(new 阅读全文

posted @ 2012-01-17 14:02 chennie 阅读(420) 评论(0) 推荐(0)

C# 图片处理之:旋转图片任意角度 .
摘要:拍摄的数码相片偶尔也有拍歪的时候。没关系,我们还是可以用C#来处理图片。///<summary>///任意角度旋转///</summary>///<paramname="bmp">原始图Bitmap</param>///<paramname="angle">旋转角度</param>///<paramname="bkColor">背景色</param>///<returns>输出Bitmap</returns>publ 阅读全文

posted @ 2012-01-17 14:01 chennie 阅读(1232) 评论(0) 推荐(0)

C#图片处理之: 另存为压缩质量可自己控制的JPEG .
摘要:处理图片时常用的过程是:读入图片文件并转化为Bitmap -> 处理此Bitmap的每个点以得到需要的效果 -> 保存新的Bitmap到文件使用C#很方便的就可以把多种格式的图片文件读到Bitmap对象中。一句话就够了,常见的格式都支持,诸如JPEG,BMP,PNG等等。Bitmap bmp = new Bitmap("文件名");然后就是怎么处理这个图片的问题了,与本案无关,pass。最后就是保存。JPEG虽然是有损压缩方案,但是它在缩减文件体积和尽可能好的保留原有信息的矛盾上很好的找到了平衡点,所以在很多情况下成为首选的保存方案。C#当然不会无视这一点,Bi 阅读全文

posted @ 2012-01-17 14:01 chennie 阅读(451) 评论(0) 推荐(0)

C# 图片处理之:彩色图片转为黑白图 .
摘要:首先解释下所谓的黑白图片。其实更准确地应该叫256级灰度图。当一个颜色点的R=G=B时,就是我们所谓的“灰色”。由于RGB的取值范围在[0,255],所以一共只有256种可能。所以彩色图片转为黑白图片的原理非常简单。只要扫描彩图的每一点,让输出图对应点的R=G=B就成了。现在问题的关键就是如何取值了。一般有两种,一种是彩图RGB三分量的算数平均值,另一种是加权平均值。加权平均是考虑到人类眼睛对不同分量的敏感程度。具体代码如下:/**////<summary>///变成黑白图///</summary>///<paramname="bmp"> 阅读全文

posted @ 2012-01-17 14:00 chennie 阅读(2524) 评论(0) 推荐(0)

C#图片处理之:Gamma校正 .
摘要:gamma值是用曲线表示的,这是一种人的眼睛对光的一种感应曲线,其中包括了物理量、身理感官及心理的感知度。 -- 摘自百度知道用C#做Gamma校正的操作也很简单。/**////<summary>///Gamma校正///</summary>///<paramname="bmp">输入Bitmap</param>///<paramname="val">[0<-明-1-暗->2]</param>///<returns>输出Bitmap</returns&g 阅读全文

posted @ 2012-01-17 13:59 chennie 阅读(981) 评论(4) 推荐(0)

C#图片处理之: 锐化
摘要:使用数码相机,难免会拍糊一些照片。但如果只是轻微糊掉,不妨可以尝试先锐化再缩小的办法补救。锐化看起来很神奇,可以在一定程度内把不清晰的变清晰,这个和柔化正好相反。其实锐化的算法说穿了很简单:取每一点的周围八点和自己本身共九个点。计算周围八个点的平均值,把自己减去这个平均值得到一个差值。这个差值乘上一个系数(也就是锐化的程度),加上自己的原始值,得到一个新值。这个新值就是我们要的锐化以后的值。啥都不说了,上DEMO。值得注意的是,下面的算法纯粹是原理性的,其实可以作更进一步的优化。/**////<summary>///锐化///</summary>///<param 阅读全文

posted @ 2012-01-17 13:58 chennie 阅读(522) 评论(0) 推荐(0)

C#图片处理之:亮度和对比度的校正
摘要:亮度和对比度应该是最常见的处理要求了。就算是N年前9寸黑白电视机也必有这两个旋钮。亮度调整算法很简单。对每一个像素的RGB值同时加上或减去一个特定的值就可以了。当然由于RGB取值范围都是在[0,255]的,所以要考虑到越界的问题。/**////<summary>///图像明暗调整///</summary>///<paramname="b">原始图</param>///<paramname="degree">亮度[-255,255]</param>///<returns>& 阅读全文

posted @ 2012-01-17 13:58 chennie 阅读(1211) 评论(0) 推荐(0)

C#图片处理之:旋转图片90度的整数倍 .
摘要:旋转图片90的整数倍那真是太简单了。publicstaticBitmapKiRotate90(Bitmapimg)...{try...{img.RotateFlip(RotateFlipType.Rotate90FlipNone);returnimg;}catch...{returnnull;}}很容易就看出来,关键在于RotateFlipType参数。实践结果如下:顺时针旋转90度 RotateFlipType.Rotate90FlipNone逆时针旋转90度 RotateFlipType.Rotate270FlipNone水平翻转 RotateFlipType.Rotate180FlipY 阅读全文

posted @ 2012-01-17 13:57 chennie 阅读(1059) 评论(0) 推荐(0)

C#图片处理之:色彩调整 .
摘要:其原理是每个象素的三个颜色分量同时增加或减少一个固定的值。现在更进一步,假如每个象素三个分量增加或减少的值不是相同的呢?嗯,这就今天要讨论的主题了。应该很容易想明白,假如我们需要一张照片偏红一点,那只需要每个象素的红色分量值都增加就可以了。举个更实际一点的场景,比如要把一张鲜艳的彩色照片处理成泛棕的老旧黑白照,最简单的一个方法就是先把它处理成256级灰阶图,然后增加每个象素的红色分量。老规矩,给出函数。/**////<summary>///色彩调整///</summary>///<paramname="bmp">原始图</param 阅读全文

posted @ 2012-01-17 13:56 chennie 阅读(1213) 评论(0) 推荐(0)

c#图片处理之:在图片上打上文字
摘要:以前讨论过在一张图片上加上另一张图片,说难也不难,基本上只要知道利用GDI+提供的DrawImage函数就可以了。现在需要在图片上打上文字,其实也很简单。贴图用DrawImage,那么贴文字当然就是DrawString啦。//============================设置文字============================== /**////<summary> ///设置文字 ///</summary> ///<paramname="b">原始图片</param> ///<paramname=&qu 阅读全文

posted @ 2012-01-17 13:55 chennie 阅读(623) 评论(0) 推荐(0)

C#图片处理之:图片缩放和剪裁 .
摘要:今天说说用C#做图片的缩放和剪裁,相信很多人会对这部分内容感兴趣,毕竟这个操作太实用了。其实在GDI+中,缩放和剪裁可以看作同一个操作,无非就是原始区域的选择不同罢了。空口无凭,先看具体算法可能更好理解。 /// <summary> /// Resize图片 /// </summary> /// <param name="bmp">原始Bitmap</param> /// <param name="newW">新的宽度</param> /// <param name=" 阅读全文

posted @ 2012-01-17 13:54 chennie 阅读(486) 评论(0) 推荐(0)

C#图片处理之:最简单的柔化算法
摘要:与锐化相反,柔化是使图片看起来更柔滑(其实也是模糊的委婉的说法)。柔化的一个最简单的实现算法就是取图片上的每一点(图片边缘点忽略),计算它周围八个点的平均值作为新像素值。想想也是,之所以看起来模糊,确实是因为周围的点长的有点像,区别不太明显。//============================柔化============================== /**////<summary> ///柔化 ///<paramname="b">原始图</param> ///<returns>输出图</returns&g 阅读全文

posted @ 2012-01-17 13:52 chennie 阅读(449) 评论(0) 推荐(0)

C#图片处理之: 获取数码相片的EXIF信息
摘要:现在的数码相机拍摄出来的照片表面上看都是很普通的JPEG的图片,但通常还包含着诸如相片拍摄时使用的相机生产商、型号、光圈值、快门速度等各类附加信息,这就是所谓的Exif信息。Exif是一种图像文件格式,只是文件的后缀名还是沿用大家熟悉的jpg而已。掌握Exif信息对学习提高摄影技术很有帮助。C#.NET作为一种现代的全能开发语言,对EXIF也有着较好的支持。在.NET中,我们可以用PropertyItem对象来获取EXIF。取得PropertyItem很简单。Image img = Image.FromFile("支持Exif的图片文件"); PropertyItem[] 阅读全文

posted @ 2012-01-17 13:50 chennie 阅读(646) 评论(0) 推荐(0)

C#图片处理之:在图片上画框(圈)
摘要:有时候给别人演示图片,例如培训某个软件使用的时候,往往需要在画面上画个框或者圈,提醒用户注意这是个重点。其实这个功能并不难,只需要知道Pen对象的用法就可以了。我们对框或者圈样式的控制都可以通过对Pen的控制来实现。 /**////<summary> ///在图片上画框 ///</summary> ///<paramname="bmp">原始图</param> ///<paramname="p0">起始点</param> ///<paramname="p1" 阅读全文

posted @ 2012-01-17 13:48 chennie 阅读(2845) 评论(0) 推荐(0)

C#图片处理之:在图片上画直线
摘要:在图片上画直线比画框更简单。线形的控制还是通过对Pen的设置来实现的。 /**////<summary> ///在图片上画线 ///</summary> ///<paramname="bmp">原始图</param> ///<paramname="p0">起始点</param> ///<paramname="p1">终止点</param> ///<paramname="RectColor">线的颜色</ 阅读全文

posted @ 2012-01-17 13:46 chennie 阅读(1374) 评论(0) 推荐(0)

C#图片处理之:保存原始Exif到处理过的JPEG图片中
摘要:自从越来越多的兄弟姐妹买了单反,亮骚就是不可避免的了,处理过的图片丢失Exif信息未免有些遗憾。而且从正儿八经的角度看,查看Exif确实是总结拍摄经验吸取教训寻找问题的一个很有效地手段。因此还是研究了下如何保存原始Exif到处理过的JPEG图片中。我的方案很简单,从原始图中原封不动的提取Exif信息,然后在保存前还给Bitmap就行。参考代码如下:publicList<PropertyItem>GetImageProperties(stringFileName){if(!File.Exists(FileName))returnnull;List<PropertyItem> 阅读全文

posted @ 2012-01-17 13:40 chennie 阅读(1068) 评论(0) 推荐(0)