zoukankan      html  css  js  c++  java
  • [转]马赛克效果

     1 /// <summary>
     2         /// 马赛克效果
     3         ///原理:确定图像的随机位置点和确定马赛克块的大小,然后马赛克块图像覆盖随机点即可.
     4         /// </summary>
     5         /// <param name="m_Iimage"></param>
     6         /// <param name="val">分割成val*val像素的小区块</param>
     7         public Image MaSaiKe(Image m_PreImage , int val)
     8         {
     9             Bitmap MyBitmap = new Bitmap(m_PreImage);
    10             if (MyBitmap.Equals(null))
    11             {
    12                 return null;
    13             }
    14             int iWidth = MyBitmap.Width;
    15             int iHeight = MyBitmap.Height;
    16             int stdR , stdG , stdB;
    17             stdR = 0;
    18             stdG = 0;
    19             stdB = 0;
    20             BitmapData srcData = MyBitmap.LockBits(new Rectangle(0 , 0 , iWidth , iHeight) ,
    21             ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb);
    22             unsafe
    23             {
    24                 byte* point = (byte*)srcData.Scan0.ToPointer();
    25                 for (int i = 0; i < iHeight; i++)
    26                 {
    27                     for (int j = 0; j < iWidth; j++)
    28                     {
    29                         if (i % val == 0)
    30                         {
    31                             if (j % val == 0)
    32                             {
    33                                 stdR = point[2];
    34                                 stdG = point[1];
    35                                 stdB = point[0];
    36                             }
    37                             else
    38                             {
    39                                 point[0= (byte)stdB;
    40                                 point[1= (byte)stdG;
    41                                 point[2= (byte)stdR;
    42                             }
    43                         }
    44                         else
    45                         {
    46                             //复制上一行  
    47                             byte* pTemp = point - srcData.Stride;
    48                             point[0= (byte)pTemp[0];
    49                             point[1= (byte)pTemp[1];
    50                             point[2= (byte)pTemp[2];
    51                         }
    52                         point += 3;
    53                     }
    54                     point += srcData.Stride - iWidth * 3;
    55                 }
    56                 MyBitmap.UnlockBits(srcData);
    57             }
    58             return MyBitmap;
    59         }
  • 相关阅读:
    2018年产品设计协作领域最强黑马居然是它?
    中小企业网页设计,轻松拓展网络市场
    那些年,UI设计师还在手工标注和切图时走的弯路
    据说,攻城狮也可以像设计狮一样切图了?
    拼图类APP原型模板分享——简拼
    UI设计初学者必看,这款设计神器教你快速入门
    设计交付指南:设计师与开发如何才能好好协作?
    用户体验设计师面试中可能会问及的10个高频问题
    产品,设计和开发,高效协同只差一份文档
    素数
  • 原文地址:https://www.cnblogs.com/LeoWong/p/2013012.html
Copyright © 2011-2022 走看看