C# vb .net实现焦距柔化特效滤镜
在.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的图层叠加是一个原理。
应用滤镜
哈吼!准备工作就绪啦!下面应用滤镜,焦距柔化滤镜是FocalSoftenEffect,实例化并应用到ImageEngine即可,代码如下:
//初始化滤镜,并添加到ImageEngine的效果滤镜组中
FocalSoftenEffect effect = new FocalSoftenEffect();
//此处,您也可以对该滤镜的具体参数进行调整,具体参考API手册
...
engine.Effects.Add(effect);
获取处理结果
应用完之后,就可以获取处理结果啦!
Image bmpResult = engine.GetOutputImage();
运行效果图
demo源码下载
相关推荐
您可以需要了解如何获取摄像头帧图片,或者桌面屏幕图片,请了解SharpCapture:
SharpCapture,桌面屏幕,摄像头,音视频采集类库
您可以需要了解对摄像头亮度对比度色调曝光等几十种参数进行调整,请了解SharpCamera:
SharpCamera,专业的摄像头高级参数深控类库
C# vb .net实现焦距柔化特效滤镜的更多相关文章
- C# vb .net实现焦距灰度特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距灰度效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- C# vb .net实现马赛克焦距像素化特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的马赛克焦距像素化效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置 ...
- C# vb .net实现圆角矩形特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的圆角矩形效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- C# vb .net实现大小调整特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的大小调整效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- C# vb .net实现透视阴影特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的透视阴影特效效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 ...
- C# vb .net实现真实阴影特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的真实阴影效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- C# vb .net实现裁剪效果特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的裁剪效果效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- C# vb .net实现黑白效果特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的黑白效果效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- C# vb .net实现位图蒙版特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的位图蒙版特效呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
随机推荐
- 模拟25A 题解
A. Lighthouse m的范围极小,显然的容斥. 总的方案数,减去受任意一个限制的方案数,加回受两个限制的方案数. 就能得到受所有限制的的方案数. 将选择的一些边所指向的点放在同一个联通块里. ...
- 【转】Linux下的CPU使用率与服务器负载的关系与区别
当我们使用top命令查看系统的资源使用情况时会看到load average,如下图所示,它表示系统在1,5,15分钟的平均工作负载. 那么什么是负载(load)呢?它和CPU的利用率又有什么关系呢? ...
- WireMock和Spring MVC模拟器
WireMock和Spring MVC模拟器 Spring Cloud Contract提供了一个方便的类,可以将JSON WireMock存根加载到Spring MockRestServiceSer ...
- css---【vw,vh】进行自适应布局单位
在进行CSS3自适应布局,会用到 vw 和 vh 进行布局 视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:L ...
- Python logging模块日志存储位置踩坑
问题描述 项目过程中写了一个小模块,设计到了日志存储的问题,结果发现了个小问题. 代码结构如下: db.py run.py 其中db.py是操作数据库抽象出来的一个类,run.py是业务逻辑代码.两个 ...
- 【转载】 TensorFlow tf.app&tf.app.flags用法介绍
作 者:marsggbo 出 处:https://www.cnblogs.com/marsggbo版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. ---------- ...
- asp.netcore 高并发下使用HttpClient的方法
大家都知道,使用HttpClient,在并发量不大的情况,一般没有任何问题:但是在并发量一上去,如果使用不当,会造成很严重的堵塞的情况. 解决方案如下: 一.可以参考微软官方提供的方法:https:/ ...
- pycharm更改缩进快捷键-ubuntu系统
前言 ubuntu系统tab+shirt是切换窗口的快捷键,而这个快捷键也恰恰是pycharm这个快捷键,他们的快捷键产生了冲突,所以目前我们需要更改下pycharm的快捷键,这样就能愉快使用缩进功能 ...
- vue播放mu38视频兼容谷歌ie等浏览器
<template> <div id="id_test_video" style="width:100%; height:auto;"> ...
- 解决org.springframework.dao.DeadlockLoserDataAccessException
添加链接池后批量添加更新出现了死锁 org.springframework.dao.DeadlockLoserDataAccessException: ### Error updating datab ...