C# vb .net图像合成-多图片叠加合成
在.net中,如何簡單快捷地實現(xiàn)圖像合成呢,比如合成文字,合成藝術(shù)字,多張圖片疊加合成等等?答案是調(diào)用SharpImage!專業(yè)圖像特效濾鏡和合成類庫。下面開始演示關(guān)鍵代碼,您也可以在文末下載全部源碼:
設置授權(quán)
第一步:在引用了SharpImage.dll之后,調(diào)用SharpImage方法之前,一定要先通過下面代碼來設置授權(quán)信息,如果是試用版,直接輸入Test即可。
KeyMgr.SetKey("Test");
初始化一個ImageEngine
從之前的一篇博文中,我們介紹了一張圖看懂SharpImage,從那篇文章我們可以看出,SharpImage通過ImageEngine來作為圖像處理的基石,所有效果都是作為ImageEngine的Effects來進行的,Effects將被應用到ImageEngine的各種Element上,產(chǎn)生千變?nèi)f化的效果。請看下面的代碼:
//實例化ImageEngine
engine = new ImageEngine();
設置ImageEngine的基礎(chǔ)參數(shù)
對ImageEngine進行一些自定義設置,具體可參考API手冊。代碼如下:
//對一些基礎(chǔ)屬性進行設置
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;//畫布為白色的
加載待處理的圖片
將待處理的圖片加載到內(nèi)存,SharpImage支持多種方式加載:從圖片URL, 本地路徑,Bitmap對象, 字節(jié)數(shù)組, Base64字符串,可任選其一。這里演示下三種方式的代碼:
#region 加載測試圖片的GDI+對象
bmpDemoImage = Properties.Resources.demo;
#endregion
#region 加載測試圖片的字節(jié)流
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();
//接下來,根據(jù)具體的圖片數(shù)據(jù)源類型來為ImageElement提供數(shù)據(jù),這里演示是用一個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://字節(jié)數(shù)組
imageEle.SourceType = ImageSource.Binary;
imageEle.SourceBinary = arrDemoImage;
break;
case 4://base64字符串
imageEle.SourceType = ImageSource.Base64String;
imageEle.SourceBase64 = strBase64DemoImage;
break;
}
綁定ImageElement和ImageEngine
將ImageElment對象和ImageEngine綁定在一起, 只需要執(zhí)行下面的代碼即可:
//將該ImageElement綁定到圖像引擎對象上
engine.Elements.Add(imageEle);
此時,一定要注意:engine.Elements可以包含很多的element,最終的效果,將是這些元素的疊加。這個原理和Photoshop的圖層疊加是一個原理。
創(chuàng)建另外一個ImageElement
哈吼!準備工作就緒啦!下面實例化要疊加的圖片元素,如果有多個,就實例化多個:
//生成一個參與合成的Element的子類,這里為ImageElement
ImageElement ele = new ImageElement();
imageEle.SourceType = ImageSource.File;
imageEle.SourceFile = "logo.jpg";
//將該Element添加到圖像引擎中,SharpImage將完成合成
engine.Elements.Add(ele);
獲取處理結(jié)果
應用完之后,就可以獲取處理結(jié)果啦!
Image bmpResult = engine.GetOutputImage();
運行效果圖
demo源碼下載
點擊下載源碼
相關(guān)推薦
您可以需要了解如何獲取攝像頭幀圖片,或者桌面屏幕圖片,請了解SharpCapture:
SharpCapture,桌面屏幕,攝像頭,音視頻采集類庫
您可以需要了解對攝像頭亮度對比度色調(diào)曝光等幾十種參數(shù)進行調(diào)整,請了解SharpCamera:
SharpCamera,專業(yè)的攝像頭高級參數(shù)深控類庫
總結(jié)
以上是生活随笔為你收集整理的C# vb .net图像合成-多图片叠加合成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆向 time.h 函数库 time、g
- 下一篇: 如何在SAP云平台上创建Redis实例