日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C# vb .net图像合成-多图片叠加合成

發(fā)布時間:2023/12/19 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 C# vb .net图像合成-多图片叠加合成 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在.net中,如何簡單快捷地實(shí)現(xiàn)圖像合成呢,比如合成文字,合成藝術(shù)字,多張圖片疊加合成等等?答案是調(diào)用SharpImage!專業(yè)圖像特效濾鏡和合成類庫。下面開始演示關(guān)鍵代碼,您也可以在文末下載全部源碼:

設(shè)置授權(quán)

第一步:在引用了SharpImage.dll之后,調(diào)用SharpImage方法之前,一定要先通過下面代碼來設(shè)置授權(quán)信息,如果是試用版,直接輸入Test即可。

KeyMgr.SetKey("Test");

初始化一個ImageEngine

從之前的一篇博文中,我們介紹了一張圖看懂SharpImage,從那篇文章我們可以看出,SharpImage通過ImageEngine來作為圖像處理的基石,所有效果都是作為ImageEngine的Effects來進(jìn)行的,Effects將被應(yīng)用到ImageEngine的各種Element上,產(chǎn)生千變?nèi)f化的效果。請看下面的代碼:

//實(shí)例化ImageEngine
engine = new ImageEngine();

設(shè)置ImageEngine的基礎(chǔ)參數(shù)

對ImageEngine進(jìn)行一些自定義設(shè)置,具體可參考API手冊。代碼如下:

//對一些基礎(chǔ)屬性進(jìn)行設(shè)置
engine.Canvas.AutoSize = true;
engine.Canvas.CenterElements = true;
engine.Canvas.Width = 320;//此處一般設(shè)置為圖片的寬即可
engine.Canvas.Height = 213;//此處一般設(shè)置為圖片的高即可
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

哈吼!準(zhǔn)備工作就緒啦!下面實(shí)例化要疊加的圖片元素,如果有多個,就實(shí)例化多個:

//生成一個參與合成的Element的子類,這里為ImageElement
ImageElement ele = new ImageElement();
imageEle.SourceType = ImageSource.File;
imageEle.SourceFile = "logo.jpg";

//將該Element添加到圖像引擎中,SharpImage將完成合成
engine.Elements.Add(ele);

獲取處理結(jié)果

應(yīng)用完之后,就可以獲取處理結(jié)果啦!

Image bmpResult = engine.GetOutputImage();

運(yùn)行效果圖

demo源碼下載

點(diǎn)擊下載源碼

相關(guān)推薦

您可以需要了解如何獲取攝像頭幀圖片,或者桌面屏幕圖片,請了解SharpCapture:
SharpCapture,桌面屏幕,攝像頭,音視頻采集類庫

您可以需要了解對攝像頭亮度對比度色調(diào)曝光等幾十種參數(shù)進(jìn)行調(diào)整,請了解SharpCamera:
SharpCamera,專業(yè)的攝像頭高級參數(shù)深控類庫

總結(jié)

以上是生活随笔為你收集整理的C# vb .net图像合成-多图片叠加合成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。