关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>ASPNET>>正文|了解Hibernate的FlushMode.NEVER

了解Hibernate的FlushMode.NEVER

[ 来路:21kn.com    时间:2007-7-8 17:38:55    点击: ]

 

  很多图片处理的算法从原理上讲其实非常简单,难点往往在如何去写算法实现它,更加难的就是如何去优化实现的算法。虽说我一向认为程序员的效率比程序的效率更重要,但为了等处理一张自己拍摄的数码照片,溜出去买杯奶茶顺便再买张彩票回来发现还没算好,无论如何都是不能忍受的。

  马赛克算法很简单,说白了就是把一张图片分割成若干个val * val像素的小区块(可能在边缘有零星的小块,但不影响整体算法),每个小区块的颜色都是相同的。为了方便起见,我们不妨让这个颜色就用该区域最左上角的那个点的颜色。当然还可以有其他方法,比如取区块中间点的颜色,或区块中随机点的颜色作代表等等。 下面的示意图就是取val=2的结果。

  原图像素

ABCDEFG
HIJKLMN
OPQRSTU
VWXYZ01
2345678

  马赛克处理后:

AACCEEG
AACCEEG
OOQQSSU
OOQQSSU
2244668

  原理就是那么简单。具体实现就看各人的思维习惯了。我的想法是:

  当y(当前高度)是val的整数倍时:

  扫描当前行中的每一点x,如果x也是val的整数倍,记录下当前x,y的颜色值;如果x不是val的整数倍,则沿用最近一次被记录的颜色值。

  当y不是val的整数倍:

  很简单,直接复制上一行。

  简单的说就是以线带面,最终实现让大家都看不清楚

  下面就是源代码。写算法不是我的强项,不过偶尔勉为其难的写个可以跑跑的不求甚解版还是可以做到的,不指望可以帮到你,只希望没有误导你。

public static Bitmap KiMosaic(Bitmap b, int val)
{
 if (b.Equals(null))
 {
  return null;
 }

 int w = b.Width;
 int h = b.Height;

 int stdR, stdG, stdB;

 stdR = 0;
 stdG = 0;
 stdB = 0;

 BitmapData srcData = b.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

 unsafe
 {
  byte* p = (byte*)srcData.Scan0.ToPointer();
  for (int y = 0; y < h; y++)
  {
   for (int x = 0; x < w; x++)
   {
    if (y % val == 0)
    {
     if (x % val == 0)
     {
      stdR = p[2]; stdG = p[1]; stdB = p[0];
     }
     else
     {
      p[0] = (byte)stdB;
      p[1] = (byte)stdG;
      p[2] = (byte)stdR;
     }
    }
    else
    {
     // 复制上一行
     byte * pTemp = p - srcData.Stride;

     p[0] = (byte)pTemp[0];
     p[1] = (byte)pTemp[1];
     p[2] = (byte)pTemp[2];
    }
    p += 3;
   } // end of x
   p += srcData.Stride - w * 3;
  } // end of y
  b.UnlockBits(srcData);
 }
 return b;
}

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:ASP.NET2.0中Treeview 的Checkboxes选中根枝叶全选中的实现方法  下一篇:C#:如何获取当前操作系统的软件版本

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号