ImageSharp .NET Core跨平台图形处理库
ImageSharp 是支持.NET Core跨平台图形处理库,ImageSharp是ImageProcessor 的.NET Core跨平台实现。
ImageSharp 支持如下操作:
调整大小,裁剪,翻转,旋转,边缘检测等。
支持BMP,PNG,GIF,JPEG 编码器。
EXIF 读取和针对JPEG写。
暂时还不支持Drawing ,即无法支持验证码及水印等操作。
GitHub:https://github.com/JimBobSquarePants/ImageSharp
目前版本为1.0.0-alpha7。
新建项目
新建一个.NET Core 控制台应用程序。
添加引用
由于目前还是alpha版,还未放置在NuGet 中,是在MyGet上 https://www.myget.org/gallery/imagesharp。
在NuGet 程序包源中加入 ImageSharp 源。
ImageSharp 源地址:https://www.myget.org/F/imagesharp

然后在NuGet控制台执行命令:
Install-Package ImageSharp -Version 1.0.0-alpha7
提示:由于是预览版更新较快,如版本无法引用请到https://www.myget.org/gallery/imagesharp 查看版本号,或更改project.json 使用最新版本。
编写代码
首先我们需要一张图,将其放置于程序根目录下命令为lena.jpg。

示例代码如下:
public static void Main(string[] args)
{
//读取EXIF
using (FileStream input = File.OpenRead("lena.jpg"))
{
Image image = new Image(input);
var exif = image.ExifProfile.Values;
foreach (var item in exif)
{
Console.WriteLine(item.Tag+":"+item.Value);
}
} //缩放
using (FileStream input = File.OpenRead("lena.jpg"))
using (FileStream output = File.OpenWrite("lena2.jpg"))
{
Image image = new Image(input);
image.Resize(image.Width / , image.Height / )
.Save(output);
}
//裁剪
using (FileStream input = File.OpenRead("lena.jpg"))
using (FileStream output = File.OpenWrite("lena3.jpg"))
{
Image image = new Image(input);
image.Crop(image.Width / , image.Height / )
.Save(output);
}
//旋转180°
using (FileStream input = File.OpenRead("lena.jpg"))
using (FileStream output = File.OpenWrite("lena4.jpg"))
{
Image image = new Image(input);
image.Rotate(RotateType.Rotate180)
.Save(output);
} //设置像素点方式简单画空白
using (FileStream output = File.OpenWrite("lena5.jpg"))
{
Image image = new Image(1,2);
Color[] colors = new Color[];
for (int i = ; i < ; i++)
{
colors[i] = Color.White;
}
image.SetPixels(, , colors);
image.Save(output);
}
Console.ReadKey();
}
运行程序会在程序根目录下得到如下的图

以上也就是 ImageSharp 的简单使用,更多可以查看官方GitHub。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
ImageSharp .NET Core跨平台图形处理库的更多相关文章
- [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建
		[.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建 1.概述 读前必备:认识.NET Core 上篇介绍了.NET 新的生态环境:包括.NET Framework..NET ... 
- .Net Core跨平台应用研究-CustomSerialPort(增强型跨平台串口类库)
		.Net Core跨平台应用研究-CustomSerialPort -增强型跨平台串口类库 摘要 在使用SerialPort进行串口协议解析过程中,经常遇到接收单帧协议数据串口接收事件多次触发,协议解 ... 
- .Net Core跨平台应用研究-HelloArm(串口篇)
		引言 为了验证采用dotnet core技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行,针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证 ... 
- 3D图形处理库
		转自 3D图形处理库 高性能软件光栅化渲染器 OpenSWR OpenSWR —— 用于OpenGL的高性能,高度可扩展的软件光栅化渲染器 OpenSWR的目的是提供一个高性能,高度可扩展的OpenG ... 
- .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布
		.Net Core 跨平台:一个简单程序的多平台(windows.Linux.osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing ... 
- .net core跨平台应用研究-ubuntu core下配置.net core运行时
		引言 年初研究了一阵子.net core跨平台应用,先后发表了几篇应用研究的文章.因工作原因,忙于项目上线,有一阵子没来博客园写文章了.最近项目基本收尾,抽空翻了下自己的博客,廖廖几篇文章,真让人汗颜 ... 
- .NET Core 跨平台 GUI 开发之 GTtkSharp 初级篇
		.NET Core 跨平台 GUI 开发之 GTtkSharp 初级篇 本文作为初级篇,适合已经安装好.NET Core 环境以及 Gtk 环境,并具备了 C#开发基础知识,能跑一些简单的例子,希望更 ... 
- .NET Core 跨平台
		前言 .NET Core是一个开源的模块化的Framework,不管是开发web或移动设备都在同一个Framework(.NET Core)下运行,而且 .NET Core也可在不同的操作系统上运 ... 
- 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
		1.前言 关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见<微信Mars:微信内部正在使用的网络层封装库,即将开源>),不过微信团队没有失约,微信Mars ... 
随机推荐
- CSS 特殊属性介绍之 pointer-events
			首先看一下 MDN 上关于 pointer-events 的介绍: CSS属性 pointer-events 允许作者控制特定的图形元素在何时成为鼠标事件的 target.当未指定该属性时,SVG 内 ... 
- golang struct扩展函数参数命名警告
			今天在使用VSCode编写golang代码时,定义一个struct,扩展几个方法,如下: package storage import ( "fmt" "github.c ... 
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
			前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ... 
- javaScript之BOM操作1
			<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- mysql-5.6.34 Installation from Source code
			Took me a while to suffer from the first successful souce code installation of mysql-5.6.34. Just pu ... 
- Windows Server 2008 R2常规安全设置及基本安全策略
			这篇文章主要介绍了Windows Web Server 2008 R2服务器简单安全设置,需要的朋友可以参考下 用的腾讯云最早选购的时候悲催的只有Windows Server 2008 R2的系统,原 ... 
- java中判断字符串是否为只包含数字
			1.用Java自带的函数 public static boolean isNumeric(String str){ for(int i=str.length();--i>=0;){ if (!C ... 
- mono for android学习过程系列教程(1)
			直接进入主题,关于mono for android的学习,首先配置好环境,如何配置环境,度娘谷歌一大堆,记得使用破解版. 我自己是百度“黑马四期”传智播客的视频,里面有破解版开发环境的软件. 今天直接 ... 
- 使用C#给Linux写Shell脚本
			在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ... 
- Spark笔记:RDD基本操作(下)
			上一篇里我提到可以把RDD当作一个数组,这样我们在学习spark的API时候很多问题就能很好理解了.上篇文章里的API也都是基于RDD是数组的数据模型而进行操作的. Spark是一个计算框架,是对ma ... 
