一个强大、支持100多种格式.Net图片操作库
更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单
我们在项目开发中,对图片的操作可以说是非常常见,比如图片大小改变、图片合并、格式转换、添加水印等,自己开发都需要费不少时间,所以今天给大家介绍一个支持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:\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);
var second = new MagickImage("c:\path\to\Snakeware.png");
images.Add(second);
using(var result = images.Mosaic())
{
result.Write("Mosaic.png");
}
}
项目地址
- End -
文章首发于公众号【编程乐趣】,欢迎大家关注。

一个强大、支持100多种格式.Net图片操作库的更多相关文章
- media静态文件统一管理 操作内存的流 - StringIO | BytesIO PIL:python图片操作库 前端解析二进制流图片(了解) Admin自动化数据管理界面
一.media ''' 1. 将用户上传的所有静态文件统一管理 -- settings.py -- MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 2. 服务 ...
- 一个.Net简单、易用的配置文件操作库
在我们日常项目开发中,操作INI/CFG配置文件,往往会通过调用WinAPI来实现,WinAPI接口参数只支持字符串,而我们项目中,往往数据类型是多种多样的,在保存和获取配置值,我们就要进行类型的转换 ...
- 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选
毕加索的艺术--Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选 官网: http://square.github.i ...
- VC下加载多种格式图片的方法总结IPicture, CxImage, CImage(AtlImage), CPictureEx
尽管VC有提供相应的API和类来操作bmp位图.图标和(增强)元文件,但却不支持jpg.gif和png等格式的图片,而这几种格式却是常常要用到的.这里我给大家介绍两种办法来操作这些格式的图片. 1.用 ...
- C# VB .NET生成条形码,支持多种格式类型
条形码简单,方便印刷,因此在各个领域得到了广泛的应用.我们自己的项目里也可以将一些特定的数据以条形码的方式来展示和应用,实现一码走天下.那么如何在C#,.Net平台代码里生成条形码呢?答案是使用Sha ...
- FFmpeg软件只是个解码编码软件,如果支持多种格式必须先安装好对应的库,下面就说下我装的库
FFmpeg软件只是个解码编码软件,如果支持多种格式必须先安装好对应的库,下面就说下我装的库:1. 安装faad2 # wget http://downloads.sourceforge.net/fa ...
- 通读SDWebImage③--gif和webP的支持、不同格式图片的处理、方向处理
本文目录 NSData+ImageContentType: 根据NSData获取MIME UIImage+GIF UIImage+WebP UIImage+MultiFormat:根据NSData相应 ...
- 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的
一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled GD Version bundled (2.0.34 compatible) GIF ...
- java基础小练习,1-打印一百次(1~10)的随机数,2-固定一个随机数(1~100),然后猜出他,3-定义以指定格式打印集合(ArrayList类型作为参数),使用{}括起来,使用@代替,分隔每个元素
推荐自己码一下,可以使用别的方法,面向对象,不需要注重过程 /* 题目:我需要打印一百次(1~10)的随机数 */ import java.util.Random; public class demo ...
- 火狐不支持webp格式的图片
<!DOCTYPE html> <html lang="en"> <style> ul{list-style: none;} li{float: ...
随机推荐
- mysql 5.7密码修改
官网下载安装包:https://dev.mysql.com/downloads/mysql/ 一.停止mysqld服务 二.编辑配置文件 有的Linux版本是/etc/my.cnf 有的Linux版本 ...
- zabbix功能应用
一.zabbix简介 1.zabbix概述 zabbix:是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,能够监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通 ...
- 关于phpstudy小坑 经典数据库报错 1044
经典数据库报错 1044 权限问题 一个很经典的问题 使用的集成环境的phpstudy , 一直都挺好的 但是每次删除后不能创建同名的数据库 最后发现原来默认的只有一个库 在这个库下面 ...
- AI驱动的PlantUML:快速生成专业级UML类图和用例图
承接前文关于如何运用 AI 工具生成时序图的内容[1],今天我们继续探讨 AI 驱动的 PlantUML:高效创建专业的 UML 类图与用例图. [1]: https://juejin.cn/post ...
- elastersearch7.6.1搭建及基本操作详解
搭建 修改系统参数 vim /etc/security/limits.conf * soft nofile 655350 * hard nofile 655350 * soft nofile 6553 ...
- HttpWebResponse 四种accept-encoding解析(gzip, deflate, br,identity【转】
var hwrs = (HttpWebResponse)hwr.GetResponse() if (hwrs.ContentEncoding.ToLower().Contains("gzip ...
- ASP.NET Core Library – ImageSharp
前言 2021 年就写过一篇了, Asp.net core 学习笔记 Image processing (ImageSharp), 只是那时还是旧的写法, 这篇作为翻新和以后继续增加新功能的介绍. I ...
- CSS – 屏幕, 打印, 分辨率, 物理像素, 逻辑像素, Retina, DPI, PPI 是什么?
前言 之前就有写过关于 Retina 和 Responsive Image 响应式图片 (responsive image) Retina 显示屏 但写的很烂, 这篇从新整理一下. 参考: 掌握web ...
- HTML – W3Schools 学习笔记
有用链接: HTML Attribute Reference (查看所有 Attributes) HTML Paragraphs Link to W3Schools <p> 里面 doub ...
- Spring —— 核心概念
IoC (Inversion of Control) 控制反转 使用对象时,由主动new产生对象转换为由外部提供对象,对象的创建控制权由程序转移至外部,这种思想成为控制反转 Spring技术对IoC思 ...