是的,C# 的 System.Drawing
命名空間提供了 DrawImage
方法,可以用來在圖像上繪制其他圖像。雖然它本身不直接支持濾鏡效果,但你可以通過以下步驟實現圖像濾鏡:
Bitmap
對象,用于存儲應用濾鏡后的圖像。Graphics
對象的 DrawImage
方法將原始圖像繪制到新創建的 Bitmap
上。ColorMatrix
對象,定義濾鏡效果。例如,你可以使用 ColorMatrix
來實現灰度濾鏡、模糊濾鏡等。ColorMatrixFilter
類將 ColorMatrix
應用到 Graphics
對象上。Graphics
對象繪制到新的 Bitmap
上。Bitmap
保存或顯示出來。下面是一個簡單的示例,展示了如何實現灰度濾鏡:
using System;
using System.Drawing;
using System.Drawing.Imaging;
class Program
{
static void Main()
{
// 加載原始圖像
using (Image originalImage = Image.FromFile("input.jpg"))
{
// 創建一個新的 Bitmap 對象,用于存儲應用濾鏡后的圖像
using (Bitmap filteredImage = new Bitmap(originalImage.Width, originalImage.Height))
{
// 使用 Graphics 對象繪制原始圖像
using (Graphics graphics = Graphics.FromImage(filteredImage))
{
// 創建一個 ColorMatrix 對象,定義灰度濾鏡效果
ColorMatrix colorMatrix = new ColorMatrix
{
Matrix3x2 = new float[][]
{
new float[] { 0.3f, 0.3f, 0.3f, 0, 0 },
new float[] { 0.3f, 0.3f, 0.3f, 0, 0 },
new float[] { 0.3f, 0.3f, 0.3f, 0, 0 },
new float[] { 0, 0, 0, 1, 0 }
}
};
// 創建一個 ColorMatrixFilter 類,將 ColorMatrix 應用到 Graphics 對象上
using (ImageAttributes imageAttributes = new ImageAttributes())
{
imageAttributes.SetColorMatrix(colorMatrix);
// 將應用了濾鏡的 Graphics 對象繪制到新的 Bitmap 上
graphics.DrawImage(originalImage, new Rectangle(0, 0, originalImage.Width, originalImage.Height), imageAttributes);
}
}
// 將新的 Bitmap 保存或顯示出來
filteredImage.Save("output.jpg");
}
}
}
}
這個示例中的灰度濾鏡將所有顏色通道的值轉換為相等值,從而實現灰度效果。你可以根據需要修改 ColorMatrix
對象的矩陣值來實現不同的濾鏡效果。