前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2023年01月 .NET CORE工具案例- Magick.NET神级图片和视频操作库

【愚公系列】2023年01月 .NET CORE工具案例- Magick.NET神级图片和视频操作库

作者头像
愚公搬代码
发布2023-01-16 09:27:19
2.4K0
发布2023-01-16 09:27:19
举报
文章被收录于专栏:历史专栏

文章目录

  • 前言
  • 一、Magick.NET的使用
    • 1.安装包
    • 2.图像的操作
      • 2.1 图像读取
      • 2.1 图像大小改变
      • 2.2 图像格式转换
      • 2.3 PDF转换
      • 2.4 添加水印、文本
      • 2.5 图片合并

前言

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

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

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

在这里插入图片描述
在这里插入图片描述

ImageMagick文档地址:https://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 Standard开发的开源项目,支持100的图片格式,可以在C#/VB.NET/.NET Core直接使用。

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

代码语言:javascript
复制
MagickNET.SetGhostscriptDirectory(@"C:\MyProgram\Ghostscript");

1.安装包

代码语言:javascript
复制
Magick.NET.Core
在这里插入图片描述
在这里插入图片描述

2.图像的操作

2.1 图像读取

代码语言:javascript
复制
// 文件读取
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 图像大小改变

代码语言:javascript
复制
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 图像格式转换

代码语言:javascript
复制
// 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转换

代码语言:javascript
复制
//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 添加水印、文本

代码语言:javascript
复制
//添加水印
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 图片合并

代码语言:javascript
复制
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"); 
    } 
}
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023/01/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、Magick.NET的使用
    • 1.安装包
      • 2.图像的操作
        • 2.1 图像读取
        • 2.1 图像大小改变
        • 2.2 图像格式转换
        • 2.3 PDF转换
        • 2.4 添加水印、文本
        • 2.5 图片合并
    相关产品与服务
    图像处理
    图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档