在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库。下面开始演示关键代码,您也可以在文末下载全部源码:
设置授权
第一步:在引用了SharpImage.dll之后,调用SharpImage方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。
初始化一个ImageEngine
从之前的一篇博文中,我们介绍了一张图看懂SharpImage,从那篇文章我们可以看出,SharpImage通过ImageEngine来作为图像处理的基石,所有效果都是作为ImageEngine的Effects来进行的,Effects将被应用到ImageEngine的各种Element上,产生千变万化的效果。请看下面的代码:
1 2
| engine = new ImageEngine();
|
设置ImageEngine的基础参数
对ImageEngine进行一些自定义设置,具体可参考API手册。代码如下:
1 2 3 4 5 6 7
| 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字符串,可任选其一。这里演示下三种方式的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #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上。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| imageEle = new ImageElement();
switch (cmbBox11.SelectedIndex) { case 0: 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: imageEle.SourceType = ImageSource.Image; imageEle.SourceImage = bmpDemoImage; break; case 3: imageEle.SourceType = ImageSource.Binary; imageEle.SourceBinary = arrDemoImage; break; case 4: imageEle.SourceType = ImageSource.Base64String; imageEle.SourceBase64 = strBase64DemoImage; break; }
|
绑定ImageElement和ImageEngine
将ImageElment对象和ImageEngine绑定在一起, 只需要执行下面的代码即可:
1 2
| engine.Elements.Add(imageEle);
|
此时,一定要注意:engine.Elements可以包含很多的element,最终的效果,将是这些元素的叠加。这个原理和Photoshop的图层叠加是一个原理。
创建OvalShapeElement
哈吼!准备工作就绪啦!下面实例化椭圆:
1 2 3 4 5 6 7
| OvalShapeElement ele = new OvalShapeElement(); ele.Fill.BackgroundColor = Color.Yellow; ele.Fill.Type = FillType.Solid;
engine.Elements.Add(ele);
|
获取处理结果
应用完之后,就可以获取处理结果啦!
1
| Image bmpResult = engine.GetOutputImage();
|
运行效果图
效果图
demo源码下载
点击下载源码
相关推荐
您可以需要了解如何获取摄像头帧图片,或者桌面屏幕图片,请了解SharpCapture:
您可以需要了解对摄像头亮度对比度色调曝光等几十种参数进行调整,请了解SharpCamera:
最后更新时间:
喜欢本文, 欢迎大爷打赏和收藏:)