长沙市做网站的网站,微网站设计平台,wordpress 广告,工业设计培训图像滤镜艺术---Oilpaint油画滤镜 原文:图像滤镜艺术---Oilpaint油画滤镜Oilpaint油画滤镜 图像油画效果实际上是将图像边缘产生一种朦胧#xff0c;雾化的效果#xff0c;同时#xff0c;将一定的边缘模糊化#xff0c;这样图像整体上看去像素与像素之间就像雾一样随机呈现… 图像滤镜艺术---Oilpaint油画滤镜 原文:图像滤镜艺术---Oilpaint油画滤镜 Oilpaint油画滤镜 图像油画效果实际上是将图像边缘产生一种朦胧雾化的效果同时将一定的边缘模糊化这样图像整体上看去像素与像素之间就像雾一样随机呈现。 算法过程如下 假设当前像素为P(x,y)他的随机位置为Pd(dx,dy)那么算法公式如下 其中K(v)为最大值不大于v的随机数正数v为雾化阈值v值越大雾化程度越明显反之雾化程度越小v0时图像无变化效果。 核心代码如下 /// summary /// Mosaic filter. /// /summary /// param namesrcSource image./param /// param nameblockSizeThe size of mosaic effect./param /// returnsResullt image./returns public Bitmap OilpaintFilter(Bitmap src, int intensity) { Bitmap srcBitmap new Bitmap(src); int w srcBitmap.Width; int h srcBitmap.Height; System.Drawing.Imaging.BitmapData srcData srcBitmap.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb); IntPtr ptr srcData.Scan0; int bytes h * srcData.Stride; byte[] srcValues new byte[bytes]; System.Runtime.InteropServices.Marshal.Copy(ptr, srcValues, 0, bytes); byte[] tempValues (byte[])srcValues.Clone(); int stride srcData.Stride; Random ran new Random(); int k 0; int dx 0; int dy 0; for (int j 0; j h; j) { for (int i 0; i w; i) { k ran.Next(intensity); dx (i k) w ? w - 1 : (i k); dy (j k) h ? h - 1 : (j k); tempValues[i * 4 j * w * 4] (byte)srcValues[dx * 4 dy * w * 4]; tempValues[i * 4 1 j * w * 4] (byte)srcValues[dx * 4 1 dy * w * 4]; tempValues[i * 4 2 j * w * 4] (byte)srcValues[dx * 4 2 dy * w * 4]; } } srcValues (byte[])tempValues.Clone(); System.Runtime.InteropServices.Marshal.Copy(srcValues, 0, ptr, bytes); srcBitmap.UnlockBits(srcData); return srcBitmap; } 图像油画滤镜效果如下 原图 Oilpaint滤镜效果 最后放上一个完整的C#版程序Demo下载链接http://www.zealpixel.com/forum.php?modviewthreadtid52extrapage%3D1 posted on 2018-03-14 08:56 NET未来之路 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lonelyxmas/p/8564738.html