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 阅读(1186) 评论(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 阅读(427) 评论(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 阅读(2457) 评论(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 阅读(941) 评论(4) 推荐(0) 编辑

C#图片处理之: 锐化

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

C#图片处理之:色彩调整 .

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

c#图片处理之:在图片上打上文字

摘要: 以前讨论过在一张图片上加上另一张图片,说难也不难,基本上只要知道利用GDI+提供的DrawImage函数就可以了。现在需要在图片上打上文字,其实也很简单。贴图用DrawImage,那么贴文字当然就是DrawString啦。//============================设置文字============================== /**////<summary> ///设置文字 ///</summary> ///<paramname="b">原始图片</param> ///<paramname=&qu 阅读全文
posted @ 2012-01-17 13:55 chennie 阅读(597) 评论(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 阅读(469) 评论(0) 推荐(0) 编辑