我们在项目开发中;对图片的操作可以说是非常常见;比如图片大小改变、图片合并、格式转换、添加水印等;自己开发都需要费不少时间;所以今天给大家介绍一个支持100多格式图片操作库;完全可以满足项目日常的开发。
项目简介
这是基于.NET Standard开发的开源项目;支持100的图片格式;可以在C#/VB.NET/.NET Core直接使用。
如果需要操作AI/EPS/PDF/PS、Video 格式;需要额外安装插件。
技术架构
1、跨平台;这是基于.NET Standard开发的系统;可以部署在docker,Windows,Linux;
项目结构
系统功能
1、读取;读取、图片信息、支持多层/帧、Exif数据、颜色;
2、调整;调整动画gif大小、指定图片大小;
3、转换;100多中格式互相转换、CMYK转换为RGB、CR2转换为JPG;
4、合并;图片合并、创建动画gif;
5、PDF;PDF转为一个/多个图片、一个/多个图片转为PDF;
6、压缩;无损压缩;
7、文本;添加文本、添加水印。
使用示例
图像读取
// 读取图片 using (var image = new MagickImage(;c:pathtoSnakeware.jpg;)) { } using (var image = new MagickImage()) { image.Read(;c:pathtoSnakeware.jpg;); image.Read(memStream); image.Read(;xc:yellow;, settings); using (var memStream = LoadMemoryStreamImage()) { image.Read(memStream); } }
大小改变
//gif图片大小改变using (var collection = new MagickImageCollection(;c:pathtoSnakewareGif;)){ collection.Coalesce(); foreach (var image in collection) { image.Resize(200, 0); } collection.Write(;c:pathtoSnakeware.resized.gif;);}// png图片大小改变using (var image = new MagickImage(;c:pathtoSnakewarePng;)){ var size = new MagickGeometry(100, 100); size.IgnoreAspectRatio = true; image.Resize(size); image.Write(;c:pathtoSnakeware.100x100.png;);}
图片格式互转
// gif 转 png using (var image = new MagickImage(;c:pathtoSnakeware.gif;)) { // Save frame as jpg image.Write(;c:pathtoSnakeware.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:pathtoSnakeware.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:pathtoSnakeware.pdf;, settings); var page = 1; foreach (var image in images) { image.Write(;c:pathtoSnakeware.Page; ; page ; ;.png;); image.Format = MagickFormat.Ptif; image.Write(;c:pathtoSnakeware.Page; ; page ; ;.tif;); page;;; } } // 图片转为pdf using (var image = new MagickImage(;c:pathtoSnakeware.jpg;)) { // Create pdf file with a single page image.Write(;c:pathtoSnakeware.pdf;); } //读取指定pdf using (var images = new MagickImageCollection()) { var settings = new MagickReadSettings(); settings.FrameIndex = 0; settings.FrameCount = 1; images.Read(;c:pathtoSnakeware.pdf;, settings); images.Clear(); settings.FrameCount = 2; images.Read(;c:pathtoSnakeware.pdf;, settings); }
添加水印、文本
//添加水印 using (var image = new MagickImage(;c:pathtoSnakeware.jpg;)) { using (var watermark = new MagickImage(;c:pathtoMagick.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:pathtoSnakeware.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:pathtoSnakeware.png;); images.Add(first); var second = new MagickImage(;c:pathtoSnakeware.png;); images.Add(second); using(var result = images.Mosaic()) { result.Write(;Mosaic.png;); }}
项目地址
https://github.com/dlemstra/Magick.NET
- End -
技术群;添加小编微信并备注进群
小编微信;mm1552923
公众号;dotNet编程大全