今天大家分享的是一个专注于NetCore平台图像处理的开源项目,老实说为这篇文章取名字想了5分钟,可能是词穷亦或是想更好的表达出这款开源项目的作用;这个项目在图像处理方面有很多功能,如:缩放,裁剪,绘画,组合图片等;今天主要讲的是用她怎么来绘图和生成验证码的实际例子。
号外:近来淘宝服装小店进了批新货,有需要购衣的朋友可以来看看,地址在文章最下方。
-
简单介绍ImageSharp
-
试试画两条线(实线和虚线)
-
生成个缩略图
-
在图片上画字
-
制作一个验证码图片
-
结合RazorPage模板,展示验证码图片
简单介绍ImageSharp
ImageSharp是对NetCore平台扩展的一个图像处理方案,在写下本文为止它最新的nuget下载量为4,034次,作者团队最近一个月刚更新的包;没错这里说最新是因为她前身和之前的版本都很受欢迎下载量也超高;她的git项目地址:https://github.com/SixLabors/ImageSharp。如果您的项目和我一样是2.0版本(2.0以前的略过),那么直接可以通过vs的nuget控制台下载对应的包,注意绘图的话需要分别下载如下两个包:
Install-Package SixLabors.ImageSharp -Version 1.0.0-beta0001
Install-Package SixLabors.ImageSharp.Drawing -Version 1.0.0-beta0001
ImageSharp用法有朋友之前写过,不过都主要针对于之前的版本,本章主要用到的都是最新的,有部分写法可能不相同。
试试画两条线(实线和虚线)
这里将用她来画两条直线并保存成图片,主要起到一个介绍作用,先来看实线如下代码:
var path = @"D:\F\学习\vs2017\netcore\Study.AspNetCore\WebApp02-1\wwwroot\images"; //默认实线 using (Image<Rgba32> image = new Image<Rgba32>(500, 500)) //画布大小 { image.Mutate(x => x. BackgroundColor(Rgba32.WhiteSmoke). //画布背景 DrawLines( Rgba32.HotPink, //字体颜色 5, //字体大小 new SixLabors.Primitives.PointF[]{ new Vector2(10, 10), new Vector2(200, 150), new Vector2(50, 300) } //两点一线坐标 ) ); image.Save($"{path}/1.png"); //保存 }
总要步骤我都备注上文字了,这里主要通过两点一线来绘制图形,Vector2对象值得注意就是C#二维坐标(x,y)对象,其实除了Vector2还有Vector3(三维坐标)等,这对于做u3d的朋友来说不会陌生,老实说这个也是我在接触u3d时候才知道有这个类的。下面来看效果图:
由两个两点一线构造的一个角,下面来看下虚线绘制:
//虚线 using (Image<Rgba32> image = new Image<Rgba32>(500, 500)) //画布大小 { image.Mutate(x => x. BackgroundColor(Rgba32.WhiteSmoke). //画布背景 DrawLines( Pens.Dash(Rgba32.HotPink, 5), //字体大小 new SixLabors.Primitives.PointF[]{ new Vector2(10, 10), new Vector2(200, 150), new Vector2(50, 300) } //两点一线坐标 ) ); image.Save($"{path}/2.png"); //保存 }
步骤都差不多,只是调用了DrawLines的扩展方法而已,其他线条例子就不多说了各位自行实验。