NET 平臺下的一個圖片處理萬能庫ImageMagick
ImageMagick是一個免費的開源軟件套件,用于編輯和操作數字圖像。它可用于創建、編輯、合成或轉換位圖圖像,并支持多種文件格式,包括 JPEG、PNG、GIF、TIFF 和 PDF,它提供了豐富的API來創建、編輯、合成和轉換圖像。ImageMagick 本身支持更多的圖像處理操作,包括但不限于圖像格式轉換、顏色空間轉換、圖像過濾、特效應用等。
安裝
可以通過 Nuget 包管理器安裝 Polly:
Install-Package Magick.NET-Q8-AnyCPU
使用
1. 創建一個簡單的圖像
using ImageMagick;
static void CreateSimpleImage()
{
using (MagickImage image = new MagickImage(MagickColor.FromRgb(138, 43, 226), 200, 200))
{
image.Write("simple_image.png");
}
}
2. 調整圖像大小
static void ResizeImage(string inputImagePath, string outputImagePath, int width, int height)
{
using (MagickImage image = new MagickImage(inputImagePath))
{
image.Resize(width, height);
image.Write(outputImagePath);
}
}
3. 裁剪圖像
public void CropImage(string inputImagePath, string outputImagePath, int width, int height, int x, int y)
{
using (MagickImage image = new MagickImage(inputImagePath))
{
image.Crop(width, height, x, y);
image.Write(outputImagePath);
}
}
4. 旋轉圖像
public void RotateImage(string inputImagePath, string outputImagePath, double degrees)
{
using (MagickImage image = new MagickImage(inputImagePath))
{
image.Rotate(degrees);
image.Write(outputImagePath);
}
}
5. 模糊效果
public void BlurImage(string inputImagePath, string outputImagePath, double radius, double sigma)
{
using (MagickImage image = new MagickImage(inputImagePath))
{
image.Blur(radius, sigma);
image.Write(outputImagePath);
}
}
6. 將多張圖片合并為GIF動畫
public void CreateGifAnimation(string[] imagePaths, string outputGifPath)
{
using (MagickImageCollection collection = new MagickImageCollection())
{
foreach (var path in imagePaths)
{
collection.Read(path);
}
collection.AnimationDelay = 100; // 設置動畫的延遲時間(單位:1/100秒)
collection.Write(outputGifPath);
}
}
7. 將圖片轉換為灰度圖
public void ConvertToGrayscale(string inputImagePath, string outputImagePath)
{
using (MagickImage image = new MagickImage(inputImagePath))
{
image.ColorType = ColorType.GRAY;
image.Write(outputImagePath);
}
}
8. 合成兩張圖片
public void CompositeImages(string image1Path, string image2Path, string outputImagePath)
{
using (MagickImage image1 = new MagickImage(image1Path))
using (MagickImage image2 = new MagickImage(image2Path))
{
image1.Composite(image2, CompositeOperator.Atop);
image1.Write(outputImagePath);
}
}
該文章在 2024/7/25 9:49:11 編輯過