在C#中,可以使用GDI+(System.Drawing命名空間)庫來實現圖像融合。以下是一個簡單的示例,展示了如何將兩個圖像融合在一起:
using System;
using System.Drawing;
namespace ImageBlending
{
class Program
{
static void Main(string[] args)
{
// 加載兩個要融合的圖像
Bitmap image1 = new Bitmap("image1.jpg");
Bitmap image2 = new Bitmap("image2.jpg");
// 創建一個新的Bitmap,用于存儲融合后的圖像
Bitmap blendedImage = new Bitmap(image1.Width, image1.Height);
// 創建一個Graphics對象,用于繪制融合后的圖像
using (Graphics graphics = Graphics.FromImage(blendedImage))
{
// 設置Graphics對象的屬性
graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
// 繪制第一張圖像
graphics.DrawImage(image1, new Rectangle(0, 0, image1.Width, image1.Height));
// 設置融合模式和透明度
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.Matrix33 = 0.5f; // 設置透明度,范圍為0(完全透明)到1(完全不透明)
ImageAttributes imageAttributes = new ImageAttributes();
imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
// 繪制第二張圖像,并應用融合模式和透明度
graphics.DrawImage(image2, new Rectangle(0, 0, image2.Width, image2.Height), 0, 0, image2.Width, image2.Height, GraphicsUnit.Pixel, imageAttributes);
}
// 保存融合后的圖像
blendedImage.Save("blendedImage.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
// 釋放資源
image1.Dispose();
image2.Dispose();
blendedImage.Dispose();
}
}
}
這個示例中,我們首先加載兩個要融合的圖像,然后創建一個新的Bitmap對象來存儲融合后的圖像。接著,我們創建一個Graphics對象,用于繪制融合后的圖像。在繪制第二張圖像時,我們設置了融合模式和透明度,使其與第一張圖像融合。最后,我們保存融合后的圖像,并釋放資源。
注意:這個示例中的融合模式是簡單的透明度混合,你可以根據需要修改ColorMatrix
來實現不同的融合效果。