Magick.NET神级.NET CORE图片视频库,2023年愚公系列案例,如何高效操作?

2026-03-30 15:261阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1292个文字,预计阅读时间需要6分钟。

Magick.NET神级.NET CORE图片视频库,2023年愚公系列案例,如何高效操作?

(文章目录)+ 前言 + 在项目开发中,对图片的操作可以说是非常常见,例如图片大小改变、图片合并、格式转换、添加水印等,ImageMagick就是.NET中一个比较强大的图像操作开源项目。

(文章目录)


前言

我们在项目开发中,对图片的操作可以说是非常常见,比如图片大小改变、图片合并、格式转换、添加水印等,ImageMagick 就是.NET一个比较强大的图片操作开源项目。

ImageMagick 是一个功能强大的图像处理库,支持 100 多种主要文件格式(不包括子格式)。 使用 Magick.NET,您可以在C#/VB.NET/.NET Core应用程序中使用ImageMagick,而无需在服务器或桌面上安装ImageMagick。

ImageMagick地址:github.com/dlemstra/Magick.NET

ImageMagick文档地址:github.com/dlemstra/Magick.NET/blob/main/docs/Readme.md

本文主要介绍以下功能:

1、读取:读取、图片信息、支持多层/帧、Exif数据、颜色;

2、调整:调整动画gif大小、指定图片大小;

3、转换:100多中格式互相转换、CMYK转换为RGB、CR2转换为JPG;

4、合并:图片合并、创建动画gif;

5、PDF:PDF转为一个/多个图片、一个/多个图片转为PDF;

6、压缩:无损压缩;

7、文本:添加文本、添加水印。

Magick.NET神级.NET CORE图片视频库,2023年愚公系列案例,如何高效操作?

一、Magick.NET的使用

这是基于.NET Standard开发的开源项目,支持100的图片格式,可以在C#/VB.NET/.NET Core直接使用。

如果你想转换EPS / PDF / PS文件,你只需要安装Ghostscript。确保只安装具有相同功能的 GhostScript 版本 平台。如果您使用的是 64 位版本的 Magick.NET 则还应安装 64 位版本的 Ghostscript。您可以使用 32 位版本 与64版本一起,但如果您保持平台不变,您将获得更好的性能。Ghostscript可以在这里下载:ghostscript.com/releases/gsdnld.html。如果您不想在计算机上安装Ghostscript,则可以复制并复制到您的服务器,并使用下面的代码告诉 Magick.NET 文件的位置。gsdll32.dll/gsdl64.dllgswin32c.exe/gswin64c.exe

MagickNET.SetGhostscriptDirectory(@"C:\MyProgram\Ghostscript");

1.安装包

Magick.NET.Core

2.图像的操作

2.1 图像读取

// 文件读取 using (var image = new MagickImage("c:\path\to\Snakeware.jpg")) { } // 流读取 using (var memStream = LoadMemoryStreamImage())//自定义去读取图片 { using (var image = new MagickImage(memStream)) { } } // 字节读取 var data = LoadImageBytes();//自定义去读取字节 using (var image = new MagickImage(data)) { } // 读取没有预定义尺寸的图像 var settings = new MagickReadSettings(); settings.Width = 800; settings.Height = 600; using (var image = new MagickImage("xc:yellow", settings)) { } using (var image = new MagickImage()) { image.Read("c:\path\to\Snakeware.jpg"); image.Read(memStream); image.Read("xc:yellow", settings); using (var memStream = LoadMemoryStreamImage())//自定义去读取图片 { image.Read(memStream); } }

2.1 图像大小改变

using ImageMagick; using (var collection = new MagickImageCollection(@"c:\path\to\SnakewareGif")) { collection.Coalesce(); foreach (var image in collection) { image.Resize(200, 0); } collection.Write(@"c:\path\to\Snakeware.resized.gif"); } // png图片大小改变 using (var image = new MagickImage(@"c:\path\to\SnakewarePng")) { var size = new MagickGeometry(100, 100); size.IgnoreAspectRatio = true; image.Resize(size); image.Write(@"c:\path\to\Snakeware.100x100.png"); }

2.2 图像格式转换

// gif 转 png using (var image = new MagickImage("c:\path\to\Snakeware.gif")) { // Save frame as jpg image.Write("c:\path\to\Snakeware.jpg"); } // 转为png格式 var settings = new MagickReadSettings(); settings.Width = 800; settings.Height = 600; using (var memStream = new MemoryStream()) { using (var image = new MagickImage("xc:purple", settings)) { image.Format = MagickFormat.Png; image.Write(memStream); } } // png 转 jpeg using (var image = new MagickImage("c:\path\to\Snakeware.png")) { image.Format = MagickFormat.Jpeg; byte[] data = image.ToByteArray(); }

2.3 PDF转换

//pdf 转化为 png、tif格式 var settings = new MagickReadSettings(); settings.Density = new Density(300, 300); using (var images = new MagickImageCollection()) { images.Read("c:\path\to\Snakeware.pdf", settings); var page = 1; foreach (var image in images) { image.Write("c:\path\to\Snakeware.Page" + page + ".png"); image.Format = MagickFormat.Ptif; image.Write("c:\path\to\Snakeware.Page" + page + ".tif"); page++; } } // 图片转为pdf using (var image = new MagickImage("c:\path\to\Snakeware.jpg")) { // Create pdf file with a single page image.Write("c:\path\to\Snakeware.pdf"); } //读取指定pdf using (var images = new MagickImageCollection()) { var settings = new MagickReadSettings(); settings.FrameIndex = 0; settings.FrameCount = 1; images.Read("c:\path\to\Snakeware.pdf", settings); images.Clear(); settings.FrameCount = 2; images.Read("c:\path\to\Snakeware.pdf", settings); }

2.4 添加水印、文本

//添加水印 using (var image = new MagickImage("c:\path\to\Snakeware.jpg")) { using (var watermark = new MagickImage("c:\path\to\Magick.NET.png")) { image.Composite(watermark, Gravity.Southeast, CompositeOperator.Over); watermark.Evaluate(Channels.Alpha, EvaluateOperator.Divide, 4); image.Composite(watermark, 200, 50, CompositeOperator.Over); } image.Write("c:\path\to\Snakeware.watermark.jpg"); } //添加文字 using (var image = new MagickImage(new MagickColor("#ff00ff"), 512, 128)) { new Drawables() .FontPointSize(72) .Font("Comic Sans") .StrokeColor(new MagickColor("yellow")) .FillColor(MagickColors.Orange) .TextAlignment(TextAlignment.Center) .Text(256, 64, "Magick.NET") .StrokeColor(new MagickColor(0, Quantum.Max, 0)) .FillColor(MagickColors.SaddleBrown) .Ellipse(256, 96, 192, 8, 0, 360) .Draw(image); }

2.5 图片合并

using ImageMagick; using (var images = new MagickImageCollection()) { var first = new MagickImage(@"c:\path\to\Snakeware.png"); images.Add(first); var second = new MagickImage(@"c:\path\to\Snakeware.png"); images.Add(second); using (var result = images.Mosaic()) { result.Write("Mosaic.png"); } }

本文共计1292个文字,预计阅读时间需要6分钟。

Magick.NET神级.NET CORE图片视频库,2023年愚公系列案例,如何高效操作?

(文章目录)+ 前言 + 在项目开发中,对图片的操作可以说是非常常见,例如图片大小改变、图片合并、格式转换、添加水印等,ImageMagick就是.NET中一个比较强大的图像操作开源项目。

(文章目录)


前言

我们在项目开发中,对图片的操作可以说是非常常见,比如图片大小改变、图片合并、格式转换、添加水印等,ImageMagick 就是.NET一个比较强大的图片操作开源项目。

ImageMagick 是一个功能强大的图像处理库,支持 100 多种主要文件格式(不包括子格式)。 使用 Magick.NET,您可以在C#/VB.NET/.NET Core应用程序中使用ImageMagick,而无需在服务器或桌面上安装ImageMagick。

ImageMagick地址:github.com/dlemstra/Magick.NET

ImageMagick文档地址:github.com/dlemstra/Magick.NET/blob/main/docs/Readme.md

本文主要介绍以下功能:

1、读取:读取、图片信息、支持多层/帧、Exif数据、颜色;

2、调整:调整动画gif大小、指定图片大小;

3、转换:100多中格式互相转换、CMYK转换为RGB、CR2转换为JPG;

4、合并:图片合并、创建动画gif;

5、PDF:PDF转为一个/多个图片、一个/多个图片转为PDF;

6、压缩:无损压缩;

7、文本:添加文本、添加水印。

Magick.NET神级.NET CORE图片视频库,2023年愚公系列案例,如何高效操作?

一、Magick.NET的使用

这是基于.NET Standard开发的开源项目,支持100的图片格式,可以在C#/VB.NET/.NET Core直接使用。

如果你想转换EPS / PDF / PS文件,你只需要安装Ghostscript。确保只安装具有相同功能的 GhostScript 版本 平台。如果您使用的是 64 位版本的 Magick.NET 则还应安装 64 位版本的 Ghostscript。您可以使用 32 位版本 与64版本一起,但如果您保持平台不变,您将获得更好的性能。Ghostscript可以在这里下载:ghostscript.com/releases/gsdnld.html。如果您不想在计算机上安装Ghostscript,则可以复制并复制到您的服务器,并使用下面的代码告诉 Magick.NET 文件的位置。gsdll32.dll/gsdl64.dllgswin32c.exe/gswin64c.exe

MagickNET.SetGhostscriptDirectory(@"C:\MyProgram\Ghostscript");

1.安装包

Magick.NET.Core

2.图像的操作

2.1 图像读取

// 文件读取 using (var image = new MagickImage("c:\path\to\Snakeware.jpg")) { } // 流读取 using (var memStream = LoadMemoryStreamImage())//自定义去读取图片 { using (var image = new MagickImage(memStream)) { } } // 字节读取 var data = LoadImageBytes();//自定义去读取字节 using (var image = new MagickImage(data)) { } // 读取没有预定义尺寸的图像 var settings = new MagickReadSettings(); settings.Width = 800; settings.Height = 600; using (var image = new MagickImage("xc:yellow", settings)) { } using (var image = new MagickImage()) { image.Read("c:\path\to\Snakeware.jpg"); image.Read(memStream); image.Read("xc:yellow", settings); using (var memStream = LoadMemoryStreamImage())//自定义去读取图片 { image.Read(memStream); } }

2.1 图像大小改变

using ImageMagick; using (var collection = new MagickImageCollection(@"c:\path\to\SnakewareGif")) { collection.Coalesce(); foreach (var image in collection) { image.Resize(200, 0); } collection.Write(@"c:\path\to\Snakeware.resized.gif"); } // png图片大小改变 using (var image = new MagickImage(@"c:\path\to\SnakewarePng")) { var size = new MagickGeometry(100, 100); size.IgnoreAspectRatio = true; image.Resize(size); image.Write(@"c:\path\to\Snakeware.100x100.png"); }

2.2 图像格式转换

// gif 转 png using (var image = new MagickImage("c:\path\to\Snakeware.gif")) { // Save frame as jpg image.Write("c:\path\to\Snakeware.jpg"); } // 转为png格式 var settings = new MagickReadSettings(); settings.Width = 800; settings.Height = 600; using (var memStream = new MemoryStream()) { using (var image = new MagickImage("xc:purple", settings)) { image.Format = MagickFormat.Png; image.Write(memStream); } } // png 转 jpeg using (var image = new MagickImage("c:\path\to\Snakeware.png")) { image.Format = MagickFormat.Jpeg; byte[] data = image.ToByteArray(); }

2.3 PDF转换

//pdf 转化为 png、tif格式 var settings = new MagickReadSettings(); settings.Density = new Density(300, 300); using (var images = new MagickImageCollection()) { images.Read("c:\path\to\Snakeware.pdf", settings); var page = 1; foreach (var image in images) { image.Write("c:\path\to\Snakeware.Page" + page + ".png"); image.Format = MagickFormat.Ptif; image.Write("c:\path\to\Snakeware.Page" + page + ".tif"); page++; } } // 图片转为pdf using (var image = new MagickImage("c:\path\to\Snakeware.jpg")) { // Create pdf file with a single page image.Write("c:\path\to\Snakeware.pdf"); } //读取指定pdf using (var images = new MagickImageCollection()) { var settings = new MagickReadSettings(); settings.FrameIndex = 0; settings.FrameCount = 1; images.Read("c:\path\to\Snakeware.pdf", settings); images.Clear(); settings.FrameCount = 2; images.Read("c:\path\to\Snakeware.pdf", settings); }

2.4 添加水印、文本

//添加水印 using (var image = new MagickImage("c:\path\to\Snakeware.jpg")) { using (var watermark = new MagickImage("c:\path\to\Magick.NET.png")) { image.Composite(watermark, Gravity.Southeast, CompositeOperator.Over); watermark.Evaluate(Channels.Alpha, EvaluateOperator.Divide, 4); image.Composite(watermark, 200, 50, CompositeOperator.Over); } image.Write("c:\path\to\Snakeware.watermark.jpg"); } //添加文字 using (var image = new MagickImage(new MagickColor("#ff00ff"), 512, 128)) { new Drawables() .FontPointSize(72) .Font("Comic Sans") .StrokeColor(new MagickColor("yellow")) .FillColor(MagickColors.Orange) .TextAlignment(TextAlignment.Center) .Text(256, 64, "Magick.NET") .StrokeColor(new MagickColor(0, Quantum.Max, 0)) .FillColor(MagickColors.SaddleBrown) .Ellipse(256, 96, 192, 8, 0, 360) .Draw(image); }

2.5 图片合并

using ImageMagick; using (var images = new MagickImageCollection()) { var first = new MagickImage(@"c:\path\to\Snakeware.png"); images.Add(first); var second = new MagickImage(@"c:\path\to\Snakeware.png"); images.Add(second); using (var result = images.Mosaic()) { result.Write("Mosaic.png"); } }