zoukankan      html  css  js  c++  java
  • 图象处理算法(七)

    七、扩散
      将xOffset与yOffset范围内的随机点颜色值移到当前位置显示。换种方式说,也就是将当前的点移到其他位置显示。p1 + stride * yIn + xIn * 3是偏移量的计算方式。
     1        public static bool Diffuse(Bitmap b, int xOffset, int yOffset, int Step)
     2        {
     3            BitmapData bmData = b.LockBits(new Rectangle(00, b.Width, b.Height), 
     4                ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
     5            int stride = bmData.Stride;
     6            System.IntPtr Scan0 = bmData.Scan0;
     7            unsafe
     8            {
     9                byte * p = (byte *)(void *)Scan0;
    10                byte * p1 = p;
    11                int nOffset = stride - b.Width*3;
    12                Random rad = new Random();
    13                for(int y=0;y<b.Height;++y)
    14                {
    15                    for(int x=0; x < b.Width; ++x )
    16                    {
    17                        if(y % Step == 0 && x % Step == 0)
    18                        {
    19                            int xIn = rad.Next(2 * xOffset) - xOffset + x;
    20                            int yIn = rad.Next(2 * yOffset) - yOffset + y;
    21                            if(xIn < 1)xIn = 0;
    22                            else if(xIn > b.Width - 1)xIn = b.Width - 1;
    23                            if(yIn < 1)yIn = 0;
    24                            else if(yIn > b.Height - 1)yIn = b.Height - 1;
    25                         byte * pTemp = p1 + stride * yIn + xIn * 3;
    26                            p[0= pTemp[0];
    27                            p[1= pTemp[1];
    28                            p[2= pTemp[2];
    29                        }

    30                        p += 3;
    31                    }

    32                    p += nOffset;
    33                }

    34            }

    35            b.UnlockBits(bmData);
    36            return true;
    37        }
  • 相关阅读:
    Oracle 服务命名(别名)的配置及原理,plsql连接用
    AdHoc发布时出现重复Provisioning Profile的解决方案
    xcode5时代如何设置Architectures和Valid Architectures
    C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]
    DataTable的数据批量写入数据库
    高中生活--第7篇–我为什么不交作业
    ITFriend网站内测公测感悟
    网站推广第一周总结和反思
    第一次当面试官
    技术人才的出路在哪里,5种选择和2种思路
  • 原文地址:https://www.cnblogs.com/faib/p/664285.html
Copyright © 2011-2022 走看看