图像滤镜艺术---Oilpaint油画滤镜
来源:互联网 发布:帝国cms 内容分页样式 编辑:程序博客网 时间:2024/04/20 08:30
其中,K(v)为最大值不大于v的随机数正数,v为雾化阈值,v值越大,雾化程度越明显,反之,雾化程度越小,v=0时,图像无变化效果。
核心代码如下:
/// <summary>
/// Mosaic filter.
/// </summary>
/// <param name="src">Source image.</param>
/// <param name="blockSize">The size of mosaic effect.</param>
/// <returns>Resullt 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?mod=viewthread&tid=52&extra=page%3D1
- 图像滤镜艺术---Oilpaint油画滤镜
- 图像特效---Oilpaint油画滤镜
- Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2
- Atitit Atitit 图像处理之 Oilpaint油画滤镜 水彩画 源码实现
- 图像滤镜艺术----Brannan滤镜
- 图像滤镜艺术--Toaster滤镜
- 图像滤镜艺术--暴雨滤镜
- 图像滤镜艺术--大雪滤镜
- 图像滤镜艺术---连环画滤镜
- 图像滤镜艺术---漫画滤镜
- 图像滤镜艺术---水彩画滤镜
- 图像滤镜艺术---Swirl滤镜
- 图像滤镜艺术---Wave滤镜
- 图像滤镜艺术----Brannan滤镜
- 图像滤镜艺术--序言
- 图像滤镜艺术---图像光照效果滤镜
- 图像滤镜艺术---Hudson滤镜(Instagram)
- 图像滤镜艺术--大雾效果滤镜
- AsyncTask
- linux参考-20150913
- 敢问路在何方,斗罢艰险又出发
- 图像滤镜艺术---图像光照效果滤镜
- Connection
- 图像滤镜艺术---Oilpaint油画滤镜
- borland c 3.1 dos编程必备工具
- WebView和Network
- poj1986 LCA转化为RMQ在线算法模板题
- 猫猫学iOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- 互联网+时代,惠而浦深耕细作中国市场
- 【数据库学习】机房收费系统(三)导出Excel
- java中Class对象详解和类名.class, class.forName(), getClass()区别
- DNS 域名系统