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

设置授权

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

  1. KeyMgr.SetKey("Test");

初始化一个ImageEngine

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

  1. //实例化ImageEngine
  2. engine = new ImageEngine();

设置ImageEngine的基础参数

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

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

加载待处理的图片

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

  1. #region 加载测试图片的GDI+对象
  2. bmpDemoImage = Properties.Resources.demo;
  3. #endregion
  4. #region 加载测试图片的字节流
  5. using (MemoryStream ms = new MemoryStream())
  6. {
  7. bmpDemoImage.Save(ms, bmpDemoImage.RawFormat);
  8. arrDemoImage = ms.ToArray();
  9. }
  10. #endregion
  11. #region 加载测试图片的Base64字符串
  12. strBase64DemoImage = Convert.ToBase64String(arrDemoImage);
  13. #endregion

初始化ImageElement

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

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

绑定ImageElement和ImageEngine

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

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

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

应用滤镜

哈吼!准备工作就绪啦!下面应用滤镜,大小调整滤镜是ResizeEffect,实例化并应用到ImageEngine即可,代码如下:

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

获取处理结果

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

  1. Image bmpResult = engine.GetOutputImage();

运行效果图

demo源码下载

点击下载源码

相关推荐

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

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

C# vb .net实现大小调整特效滤镜的更多相关文章

  1. C# vb .net实现HSL调整特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的HSL调整呢?答案是调用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实现gamma伽玛调整特效滤镜

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

  6. C# vb .net实现圆角矩形特效滤镜

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

  7. C# vb .net实现透视阴影特效滤镜

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

  8. C# vb .net实现真实阴影特效滤镜

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

  9. C# vb .net实现裁剪效果特效滤镜

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

随机推荐

  1. vs2010怎么更改调试时使用的浏览器

    在当前网站的起始网页上右击,在右击菜单中选择 浏览方式 步骤阅读 2

  2. 《微信小程序商城开发实战》笔者的新书,欢迎各位粉丝上京东购买

    作者图书京东链接,请点击------>>>    **微信小程序商城开发实战** 附京东真实评价截图: 编辑推荐 在当今移动互联网大潮中,微信应用凭借其庞大的用户基数和极强的用户黏性 ...

  3. 如何查看android studio sdk路径配置

    file–>Other Settings–>Default Project Structure

  4. 让Mac终端保持(SSH)与远程的连接状态

    编辑 /etc/ssh/ssh_config 添加以下设置可解决这个问题: # 断开时重试连接的次数 ServerAliveCountMax 5 # 每隔5秒自动发送一个空的请求以保持连接 Serve ...

  5. ECharts饼图自定义

    [本文出自天外归云的博客园] 实现: 1.饼块可点击(点击饼块跳转到百度) 2.饼块自定义标签显示(显示个数.占比) 3.自定义标签连接线样式(虚线) 前端php代码如下: <!DOCTYPE ...

  6. visual studio制作代码片段

    使用 Visual Studio 的代码片段功能,我们可以快速根据已有模板创建出大量常用的代码出来.ReSharper 已经自带了一份非常好用的代码片段工具,不过使用 ReSharper 创建出来的代 ...

  7. PMP 第8章错题总结

    1.项目经理为项目的可交付成果定义验收标准.这些应记录在项目范围说明书2.项目的总体预算是“成本基准+管理储备”,成本基准里本身已包含了应急储备.工作包成本估算.活动成本估算3.范围基准包含----项 ...

  8. java url 编码

    public static void main(String[] args) throws UnsupportedEncodingException { String encodeUrl = URLE ...

  9. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器版本打包方法介绍

    EasyDSS流媒体解决方案是一套集流媒体点播.转码.管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体解决方案.EasyDSS软件以压缩包的形式提供给客户使用,同时支持Linux和 Win ...

  10. 细说RESTful API之幂等性

    目录 接口幂等性的含义 接口符合幂等性有什么用处 HTTP方法的幂等性与安全性 如何设计符合幂等性的接口 写在最后 接口幂等性的含义 幂等性原本是数学中的含义,表达式的是N次变换与1次变换的结果相同. ...