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

应用滤镜

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

//初始化滤镜,并添加到ImageEngine的效果滤镜组中
AdjustContrastEffect effect = new AdjustContrastEffect();
effect.Level = 100; //此处,您也可以对该滤镜的具体参数进行调整,具体参考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实现HSL调整特效滤镜

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

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

  7. GPUImage中对比度调整的实现——GPUImageContrastFilter

    对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,差异范围越大代表对比越大,图像越鲜亮,差异范围越小代表对比越小,图像越灰. GPUImage中实现了对比度调整的Filter,其 ...

  8. 图像对比度调整的simulink仿真总结

    图像对比度调整可以由一个模块contrast adjustment 完成,参数有输入范围和输出范围,计算过程由以下公式决定 解释一下,当input<=low_in的时候输出的值是low_out+ ...

  9. 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

随机推荐

  1. Freemarker的简单demo

    第一步.导入依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemark ...

  2. vue+element 表格导出Excel文件

    https://www.cnblogs.com/bobodeboke/p/8867481.html  非常感谢 这个大佬 才让我搞到了Blob.js 和 Export2Excel.js 如果最后运行时 ...

  3. 测试linux下磁盘的读写速率

    1) 通过df -h命令查看磁盘情况 Filesystem            Size  Used Avail Use% Mounted on/dev/sda4             289G  ...

  4. koa post提交数据,koa-bodyparser中间件来获取post提交数据

    原生 Nodejs 获取 post 提交数据 首先创建并初始化一个node应用,根路由使用index.ejs模板 var Koa=require('koa') var router = require ...

  5. Ubuntu系统之Hadoop搭建

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3223 一.在Window中安装Oracle VM VirtualBox 二 ...

  6. modao账户

    chairman987@163.com 墨刀注册 p@ssw0rd OR 123456

  7. android -------- RSA加密解密算法

    RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用 RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计 ...

  8. java 库 pdfbox 将 pdf 文件转换成高清图片方法

    近期需要将 pdf 文件转成高清图片,使用库是 pdfbox.fontbox.可以使用 renderImageWithDPI 方法指定转换的清晰度,当然清晰度越高,转换需要的时间越长,转换出来的图片越 ...

  9. Spark2-数据探索

    freqItems sampleBy cov crosstab approxQuantitle boolmFilter 布隆选择器 corr 皮尔逊相关系数 countMinSketch Spark2 ...

  10. matlab学习笔记10_5 通用字符串操作和比较函数

    一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...