博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享一段C#使用指针的代码!! 马赛克效果
阅读量:2287 次
发布时间:2019-05-09

本文共 2160 字,大约阅读时间需要 7 分钟。

来自:http://bbs.csdn.net/topics/360146578

这效果你懂的。

这段代码使用了不安全代码,用了指针,要运行需要更改VS配置,Google下。看代码和效果:

///         /// 马赛克效果        ///原理:确定图像的随机位置点和确定马赛克块的大小,然后马赛克块图像覆盖随机点即可.        ///         ///         /// 分割成val*val像素的小区块        public Image MaSaiKe(Image m_PreImage , int val)        {            Bitmap MyBitmap = new Bitmap(m_PreImage);            if (MyBitmap.Equals(null))            {                return null;            }            int iWidth = MyBitmap.Width;            int iHeight = MyBitmap.Height;            int stdR , stdG , stdB;            stdR = 0;            stdG = 0;            stdB = 0;            BitmapData srcData = MyBitmap.LockBits(new Rectangle(0 , 0 , iWidth , iHeight) ,            ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb);            unsafe            {                byte* point = (byte*)srcData.Scan0.ToPointer();                for (int i = 0; i < iHeight; i++)                {                    for (int j = 0; j < iWidth; j++)                    {                        if (i % val == 0)                        {                            if (j % val == 0)                            {                                stdR = point[2];                                stdG = point[1];                                stdB = point[0];                            }                            else                            {                                point[0] = (byte)stdB;                                point[1] = (byte)stdG;                                point[2] = (byte)stdR;                            }                        }                        else                        {                            //复制上一行                              byte* pTemp = point - srcData.Stride;                            point[0] = (byte)pTemp[0];                            point[1] = (byte)pTemp[1];                            point[2] = (byte)pTemp[2];                        }                        point += 3;                    }                    point += srcData.Stride - iWidth * 3;                }                MyBitmap.UnlockBits(srcData);            }            return MyBitmap;        }
效果:

转载地址:http://vounb.baihongyu.com/

你可能感兴趣的文章
Docker容器跨主机通讯
查看>>
Docker单机编排docker-compose
查看>>
Docker数据管理
查看>>
Dockerfile创建镜像
查看>>
Docker镜像仓库搭建 图形化Harbor
查看>>
Kubernetes集群组件安装(二进制安装)
查看>>
阿里云ECS磁盘在线扩容后扩容磁盘
查看>>
K8S控制器Deployment
查看>>
Ambari安装
查看>>
使用ambari创建Hadoop集群
查看>>
KVM和Qemu的区别
查看>>
KVM
查看>>
NoSQL分类
查看>>
MongoDB安装
查看>>
MongoDB基础操作
查看>>
MongoDB用户权限管理
查看>>
Zabbix 安装配置
查看>>
zabbix自定义监控项
查看>>
zabbix报警功能(邮件报警)---触发器/动作
查看>>
zabbix微信报警
查看>>