在.net中,如何简单快捷地实现Photoshop滤镜组中的透视反射呢?答案是调用SharpImage!专业图像特效滤镜和合成类库。下面开始演示关键代码,您也可以在文末下载全部源码:
设置授权
第一步:在引用了SharpImage.dll之后,调用SharpImage方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。
1 | KeyMgr.SetKey("Test"); |
初始化一个ImageEngine
从之前的一篇博文中,我们介绍了一张图看懂SharpImage,从那篇文章我们可以看出,SharpImage通过ImageEngine来作为图像处理的基石,所有效果都是作为ImageEngine的Effects来进行的,Effects将被应用到ImageEngine的各种Element上,产生千变万化的效果。请看下面的代码:
1 | //实例化ImageEngine |
设置ImageEngine的基础参数
对ImageEngine进行一些自定义设置,具体可参考API手册。代码如下:
1 | //对一些基础属性进行设置 |
加载待处理的图片
将待处理的图片加载到内存,SharpImage支持多种方式加载:从图片URL, 本地路径,Bitmap对象, 字节数组, Base64字符串,可任选其一。这里演示下三种方式的代码:
1 |
|
初始化ImageElement
在SharpImage中,图片被抽象为ImageElement,我们将待处理图片,绑定到ImageElement上。代码如下:
1 | //建立一个ImageElement |
绑定ImageElement和ImageEngine
将ImageElment对象和ImageEngine绑定在一起, 只需要执行下面的代码即可:
1 | //将该ImageElement绑定到图像引擎对象上 |
此时,一定要注意:engine.Elements可以包含很多的element,最终的效果,将是这些元素的叠加。这个原理和Photoshop的图层叠加是一个原理。
应用滤镜
哈吼!准备工作就绪啦!下面应用滤镜,透视反射滤镜是PerspectiveReflectionEffect,实例化并应用到ImageEngine即可,代码如下:
1 | //初始化滤镜,并添加到ImageEngine的效果滤镜组中 |
获取处理结果
应用完之后,就可以获取处理结果啦!
1 | Image bmpResult = engine.GetOutputImage(); |
运行效果图

demo源码下载
相关推荐
您可以需要了解如何获取摄像头帧图片,或者桌面屏幕图片,请了解SharpCapture:
SharpCapture,桌面屏幕,摄像头,音视频采集类库
您可以需要了解对摄像头亮度对比度色调曝光等几十种参数进行调整,请了解SharpCamera: