在.net中,如何简单快捷地实现Photoshop滤镜组中的淡色效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库。下面开始演示关键代码,您也可以在文末下载全部源码:

设置授权

第一步:在引用了SharpImage.dll之后,调用SharpImage方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。

KeyMgr.SetKey("Test");

初始化一个ImageEngine

从之前的一篇博文中,我们介绍了一张图看懂SharpImage,从那篇文章我们可以看出,SharpImage通过ImageEngine来作为图像处理的基石,所有效果都是作为ImageEngine的Effects来进行的,Effects将被应用到ImageEngine的各种Element上,产生千变万化的效果。请看下面的代码:

//实例化ImageEngine
engine = new ImageEngine();

设置ImageEngine的基础参数

对ImageEngine进行一些自定义设置,具体可参考API手册。代码如下:

//对一些基础属性进行设置
engine.Canvas.AutoSize = true;
engine.Canvas.CenterElements = true;
engine.Canvas.Width = 320;//此处一般设置为图片的宽即可
engine.Canvas.Height = 213;//此处一般设置为图片的高即可
engine.Canvas.Fill.Type = FillType.Solid;//采用纯色填充画布
engine.Canvas.Fill.BackgroundColor = Color.White;//画布为白色的

加载待处理的图片

将待处理的图片加载到内存,SharpImage支持多种方式加载:从图片URL, 本地路径,Bitmap对象, 字节数组, Base64字符串,可任选其一。这里演示下三种方式的代码:

#region 加载测试图片的GDI+对象
bmpDemoImage = Properties.Resources.demo;
#endregion #region 加载测试图片的字节流
using (MemoryStream ms = new MemoryStream())
{
bmpDemoImage.Save(ms, bmpDemoImage.RawFormat);
arrDemoImage = ms.ToArray();
}
#endregion #region 加载测试图片的Base64字符串
strBase64DemoImage = Convert.ToBase64String(arrDemoImage);
#endregion

初始化ImageElement

在SharpImage中,图片被抽象为ImageElement,我们将待处理图片,绑定到ImageElement上。代码如下:

//建立一个ImageElement
imageEle = new ImageElement(); //接下来,根据具体的图片数据源类型来为ImageElement提供数据,这里演示是用一个ComboBox来手动选择的
switch (cmbBox11.SelectedIndex)
{
case 0:
//图片URL
imageEle.SourceType = ImageSource.File;
imageEle.SourceFile = "http://www.zzsgzn.com/images/demo.jpg";
break;
case 1://本地路径
imageEle.SourceType = ImageSource.File;
imageEle.SourceFile = "c:\\demo.jpg";
break;
case 2://GDI+对象
imageEle.SourceType = ImageSource.Image;
imageEle.SourceImage = bmpDemoImage;
break;
case 3://字节数组
imageEle.SourceType = ImageSource.Binary;
imageEle.SourceBinary = arrDemoImage;
break;
case 4://base64字符串
imageEle.SourceType = ImageSource.Base64String;
imageEle.SourceBase64 = strBase64DemoImage;
break;
}

绑定ImageElement和ImageEngine

将ImageElment对象和ImageEngine绑定在一起, 只需要执行下面的代码即可:

//将该ImageElement绑定到图像引擎对象上
engine.Elements.Add(imageEle);

此时,一定要注意:engine.Elements可以包含很多的element,最终的效果,将是这些元素的叠加。这个原理和Photoshop的图层叠加是一个原理。

应用滤镜

哈吼!准备工作就绪啦!下面应用滤镜,淡色效果滤镜是TintEffect,实例化并应用到ImageEngine即可,代码如下:

//初始化滤镜,并添加到ImageEngine的效果滤镜组中
TintEffect effect = new TintEffect(); //此处,您也可以对该滤镜的具体参数进行调整,具体参考API手册
... engine.Effects.Add(effect);

获取处理结果

应用完之后,就可以获取处理结果啦!

Image bmpResult = engine.GetOutputImage();

运行效果图

demo源码下载

点击下载源码

相关推荐

您可以需要了解如何获取摄像头帧图片,或者桌面屏幕图片,请了解SharpCapture:
SharpCapture,桌面屏幕,摄像头,音视频采集类库

您可以需要了解对摄像头亮度对比度色调曝光等几十种参数进行调整,请了解SharpCamera:
SharpCamera,专业的摄像头高级参数深控类库

C# vb .net实现淡色效果滤镜的更多相关文章

  1. C# vb .net实现焦距淡色特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距淡色效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  2. C# vb .net实现棕褐色效果特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的棕褐色效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一 ...

  3. C# vb .net实现颜色替换效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的颜色替换效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  4. C# vb .net实现相机视图效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的相机视图效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  5. C# vb .net实现玻璃桌子效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的玻璃桌子效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  6. C# vb .net实现装饰边框效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的装饰边框效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  7. 图层锁定vlisp函数高版本图元自动淡色显示

    (defun c:tt(/ obj) (sk_layerLock (getvar "clayer") nil) (princ) ) ;;;name:sk_layerLock ;;; ...

  8. VB: 再次使用的体会

    放下VB已经有7.8年的时候了. 记得在上学的时候,一直迷恋着它,学了三年的VB,写了不少小软件. 到了工作之后,转到JAVA后,就一直没用VB. 这次的项目由于与系统的相关性高以及安装文件的大小有限 ...

  9. compass color 颜色 对比色[Sass和compass学习笔记]

    最基本的api 是对比色,对与我这种菜鸟来说,没有什么比在一个背景色下 用什么颜色的文字坑蛋疼的事情了,这个工具可以帮助大家很好解决这个问题 api 地址 http://compass-style.o ...

随机推荐

  1. NULL与nullptr

    [https://blog.csdn.net/weixin_40237626/article/details/82560012] 其实啊,在编译器进行解释程序时,NULL会被直接解释成0,所以这里的参 ...

  2. Windows 文件过滤驱动经验总结

    Windows 文件过滤驱动经验总结作者:sinister 本文转载自驱动开发网 看了 ChuKuangRen 的第二版<文件过滤驱动开发教程>后,颇有感触.我想,交流都是建立在平等的基础 ...

  3. MyBatis(九):Mybatis Java API批量操作(增、删、改、查)

    最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...

  4. Windows系统中CreateFileMapping实现的共享内存及用法

    在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模 ...

  5. 对回溯算法的理解(以数独游戏为例,使用c++实现)

    算法思想: 数独游戏的规则: 每一行都用到1.2.3.4.5.6.7.8.9位置不限: 每一列都用到1.2.3.4.5.6.7.8.9位置不限: 每3×3的格子(共九个这样的格子)都用到1.2.3.4 ...

  6. vi编辑器操作 快捷键

    vi编辑器操作 快捷键 1. 命令模式 与 编辑模式切换 a:光标向后移动一位进入编辑模式 i:光标和内容 没有变化进入编辑模式 o:新起一行进入编辑模式 s:删除光标所在字符进入编辑模式       ...

  7. 理解Spark RDD中的aggregate函数(转)

    针对Spark的RDD,API中有一个aggregate函数,本人理解起来费了很大劲,明白之后,mark一下,供以后参考. 首先,Spark文档中aggregate函数定义如下 def aggrega ...

  8. dubbo连接过程

    场景1 启动时 dubbo服务提供端在Zookeeper上注册的节点目录:假设接口名称是:com.bob.dubbo.service.CityDubboService dubbo服务提供端连接到注册中 ...

  9. 基于redis5的session共享:【redis 5.x集群应用研究】

    基于springsession构建一个session共享的模块. 这里,基于redis的集群(Redis-5.0.3版本),为了解决整个物联网平台的各个子系统之间共享session需求,且方便各个子系 ...

  10. how to transfer your linux to new work environment

    tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --ex ...