一个强大、支持100多种格式 .NET 图片操作库
我们在项目开发中,对图片的操作可以说是非常常见,比如图片大小改变、图片合并、格式转换、添加水印等,自己开发都需要费不少时间,所以给大家介绍一个支持100多格式图片操作库,完全可以满足项目日常的开发。
项目简介
这是基于.NET Standard开发的开源项目,支持100的图片格式,可以在C#/ http:// VB.NET/.NET Core直接使用。
如果需要操作AI/EPS/PDF/PS、Video 格式,需要额外安装插件。
技术架构
1、跨平台:这是基于.NET Standard开发的系统,可以部署在Docker,Windows,Linux;
项目结构
临时加更干货分享
大家能看到这里,已是对我们的支持了。 分享一组9月录制的C#零基础教程。 我们喜欢做这样的分享,它足够的基础,对新手友好。如果需要的话,就来免费领取吧!
资料免费自取:
由于内容过多不便呈现, 需要视频教程和配套源码的小伙伴,点击下方卡片!

也可点击下方卡片: 点击后自动复制威芯号,并跳转到威芯。搜索威芯号添加,内容已做打包, 备注知乎
即可免费领取,注意查收!

系统功能
1、读取:读取、图片信息、支持多层/帧、Exif数据、颜色;
2、调整:调整动画gif大小、指定图片大小;
3、转换:100多中格式互相转换、CMYK转换为RGB、CR2转换为JPG;
4、合并:图片合并、创建动画gif;
5、PDF:PDF转为一个/多个图片、一个/多个图片转为PDF;
6、压缩:无损压缩;
7、文本:添加文本、添加水印。
使用示例
图像读取
// 读取图片
using (var image = new MagickImage("c:\path\to\Snakeware.jpg"))
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);
大小改变
//gif图片大小改变
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");
图片格式互转
// 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();
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);
添加水印、文本
//添加水印
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);
图片合并
using(var images = new MagickImageCollection()) {
var first = new MagickImage("c:\path\to\Snakeware.png");
images.Add(first);