在.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://图片URLimageEle.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的图层叠加是一个原理。

应用滤镜

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

//初始化滤镜,并添加到ImageEngine的效果滤镜组中
FilmstripEffect effect = new FilmstripEffect();//此处,您也可以对该滤镜的具体参数进行调整,具体参考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. vb中可视对象的操作

    问题 : 在调试机房结账的部分,这两部分总是出问题,实时错误424. 错误解释: 未找到窗体(错误 424) 后来通过大量的查阅,找到了答案. MSHFlexGrid1是一个"控件" ...

  7. 机房收费系统【VB版】——前期准备

    前言: 没有源码和参考的机房收费系统,很犯怵的开始,完全不懂如何下手,经过后来小伙伴的交流和巨人的博客. 准备: 1.安装机房收费系统程序 1.1添加ODBC数据源--添加文件DSN--附加数据库-- ...

  8. 【VB】学生信息管理系统6——错误调试

    因为站在了巨人的肩膀上,在理解代码意思后的调试中,用到之前的别人的CSDN.所以原理查的不是很透彻.这里总结一下我的问题! 1.VB(如下代码)中mrc.EOF = False应该怎么理解呢? Set ...

  9. 【VB】学生信息管理系统5——数据库代码

    这次学生信息管理系统在代码的理解过程中遇到了一些问题.总结如下: 1. sql server的安装过程各个步骤的意思.在安装SQL Server的时候按照网上的步骤,我觉得这个需要学完整个数据库再返回 ...

  10. 【VB】学生信息管理系统4——数据库的发展

    由于连接数据的时候出现了很多不懂得问题,为什么要连接,它是怎么连接的,查着查着,就越看越多.又不舍得就这么放过这些问题,所以就耐心看看究竟是怎么回事! 1.自从出现数据库,人们渴望用数据和应用程序做交 ...

最新文章

  1. Centos和Redhat的区别和联系
  2. 关注 | 5G 和 WiFi-6,谁是智能制造的主角?
  3. Halcon的数据类型
  4. 百度地图API快速调用,一键生成百度地图
  5. 你必须知道的EF知识和经验
  6. redis事务不具有回滚机制,那么它是如何进行事务控制的
  7. 经验风险、期望风险、结构风险
  8. LeetCode Algorithm 1. 两数之和
  9. c#中WepAPI(post/get)控制器方法创建和httpclient调用webAPI实例
  10. 浙江金融职业学院计算机一级,浙江金融职业学院全景-360度,720度,高清全景地图-expoon网展...
  11. Python---二分法查找
  12. C语言-查找顺序表中的最大值
  13. mysql修改字段null为空字符串
  14. CCFollow和ActionCallFunc
  15. Vue2.0三——Vue-router
  16. Hbase 的Java API 操作
  17. 如何破解linux密码
  18. 虎牙直播电脑配置推荐2021 虎牙直播电脑配置清单
  19. 2012年移动SEO启示
  20. 【Axure篇】(二)Axure RP9日期控件制作(多种格式)

热门文章

  1. 华东交通大学计算机全国排名,华东交通大学世界排名、中国排名、专业排名
  2. 【最优化导论】一维搜索方法
  3. 网页布局颜色搭配布局总结
  4. UI设计中,颜色的搭配
  5. 价值7k美刀的Flickr网站漏洞是怎么样的?
  6. 天使投资人讨论区块链投资:区块链虚火还是真火?
  7. vid在c语言中的作用,——PVID的作用及和VID的区别
  8. [maven] Maven面试宝典
  9. 关于Iphone的手势识别
  10. 科技部:中国131家独角兽企业 名单文字版