ImageSharp一个专注于NetCore平台图像处理的开源项目

本文介绍了ImageSharp,一个专注.NetCore平台的图像处理开源项目,详细讲解了如何使用它进行图像绘图(包括实线和虚线)、生成缩略图、在图片上写字、制作验证码图片,以及在RazorPage中展示验证码图片的方法。
摘要由CSDN通过智能技术生成

今天大家分享的是一个专注于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的扩展方法而已,其他线条例子就不多说了各位自行实验。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值