当前位置: 首页 > news >正文

企业网站模板源码免费南通网站开发公司

企业网站模板源码免费,南通网站开发公司,如何做网站推广下拉刘贺稳14,iis网站建设中今天大家分享的是一个专注于NetCore平台图像处理的开源项目#xff0c;老实说为这篇文章取名字想了5分钟#xff0c;可能是词穷亦或是想更好的表达出这款开源项目的作用#xff1b;这个项目在图像处理方面有很多功能#xff0c;如#xff1a;缩放#xff0c;裁剪#xf… 今天大家分享的是一个专注于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 (ImageRgba32 image new ImageRgba32(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 (ImageRgba32 image new ImageRgba32(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的扩展方法而已其他线条例子就不多说了各位自行实验。 生成个缩略图和在图片上画字 对于图片类型的网站来说缩略图是常见的这里用ImageSharp生成缩略图很简单本实例用8.png做样本来生成缩略图8-1.png直接看例子如下是netstandard 1.3的例子 //缩略图using (ImageRgba32 image Image.Load(${path}/8.png)){image.Mutate(x x.Resize(image.Width / 2, image.Height / 2));image.Save(${path}/8-1.png);} 为了更好的对比缩略图和原图的区别这里对接拿两图的属性做对比如 能很好的看出缩略图文件大小和像素都减半了实际缩略的时候不一定减半这全由参数控制Resize(width,height) 画字在图片上画我们想要的字其实类似于水印的一种需求下面是在图片上画字的代码 //画字 var install_Family new FontCollection().Install(System.IO.Path.Combine(Directory.GetCurrentDirectory(), wwwroot/bak, STKAITI.TTF)                //C:\Windows\Fonts\STKAITI.TTF   //字体文件                );            var font new Font(install_Family, 50); //字体using (ImageRgba32 image Image.Load(${path}/8.png)){image.Mutate(x x.DrawText(                        你们好我是神牛, //文字内容                         font,Rgba32.HotPink,                         new Vector2(50, 150),TextGraphicsOptions.Default));image.Save(${path}/8-2.png);} 这里用ImageSharp在图片上画字的时候需要注意字体因为windows系统自带了字体问题这里以STKAITI.TTF字体文件为例它存储于 C:\Windows\Fonts\STKAITI.TTF 目录当然您可以直接把它拷贝到我们项目中如下我这里的例子一样做法这里只测试了windows下可用尚未测试linux下直接使用该字体文件是否可行 制作一个验证码图片 下面我们将用她来画一个验证码类型的图片通常验证码都有一些点和线来干扰上面已经有画线例子了这里展示怎么画点 //画点规则的点其他的各位自行写算法 var dianWith 1; //点宽度var xx 300; //图片宽度var yy 200; //图片高度var xx_space 10; //点与点之间x坐标间隔var yy_space 5; //y坐标间隔var listPath new ListIPath();            for (int i 0; i xx / xx_space; i){                for (int j 0; j yy / yy_space; j){                    var position new Vector2(i * xx_space, j * yy_space);                    var linerLine new LinearLineSegment(position, position);                    var shapesPath new SixLabors.Shapes.Path(linerLine);listPath.Add(shapesPath);}}            using (ImageRgba32 image new ImageRgba32(xx, yy)) //画布大小            {image.Mutate(x x.BackgroundColor(Rgba32.WhiteSmoke).   //画布背景                            Draw(Pens.Dot(Rgba32.HotPink, dianWith),   //大小new SixLabors.Shapes.PathCollection(listPath) //坐标集合                        ));image.Save(${path}/9.png); //保存} 这里直接利用IImageProcessingContextTPixel扩展方法Draw来绘制有规则的点如图所示 比较单调或许您们能做的更好看些下面来做验证码图片主要由画点画字验证码图片这里我封装了一个方法直接生成验证码图片 /// summary/// 画点画字验证码图片  /// /summary/// param namecontent验证码/param/// param nameoutImgPath输出图片路径/param/// param namefontFilePath字体文件/param/// param namex图片宽度/param/// param namey图片高度/parampublic void GetValidCode(                    string content 我是神牛,                    string outImgPath D:/F/学习/vs2017/netcore/Study.AspNetCore/WebApp02-1/wwwroot/images/10.png,                    string fontFilePath D:\F\学习\vs2017\netcore\Study.AspNetCore\WebApp02-1\wwwroot\bak\STKAITI.TTF,                    int xx 150, int yy 25){            var dianWith 1; //点宽度var xx_space 10; //点与点之间x坐标间隔var yy_space 5; //y坐标间隔var wenZiLen content.Length; //文字长度var maxX xx / wenZiLen; //每个文字最大x宽度var prevWenZiX 0; //前面一个文字的x坐标var size 16;//字体大小            //字体var install_Family new FontCollection().Install(fontFilePath              //C:\Windows\Fonts\STKAITI.TTF   //windows系统下字体文件              );            var font new Font(install_Family, size); //字体            //点坐标var listPath new ListIPath();            for (int i 0; i xx / xx_space; i){                for (int j 0; j yy / yy_space; j){                    var position new Vector2(i * xx_space, j * yy_space);                    var linerLine new LinearLineSegment(position, position);                    var shapesPath new SixLabors.Shapes.Path(linerLine);listPath.Add(shapesPath);}}            //画图using (ImageRgba32 image new ImageRgba32(xx, yy)) //画布大小            {image.Mutate(x {                    //画点var imgProc x.BackgroundColor(Rgba32.WhiteSmoke). //画布背景                              Draw(Pens.Dot(Rgba32.HotPink, dianWith),   //大小new SixLabors.Shapes.PathCollection(listPath) //坐标集合                          );                    //逐个画字for (int i 0; i wenZiLen; i){                        //当前的要输出的字var nowWenZi content.Substring(i, 1);                        //文字坐标var wenXY new Vector2();                        var maxXX prevWenZiX (maxX - size);wenXY.X new Random().Next(prevWenZiX, maxXX);wenXY.Y new Random().Next(0, yy - size);prevWenZiX Convert.ToInt32(Math.Floor(wenXY.X)) size;                        //画字                        imgProc.DrawText(nowWenZi,   //文字内容                           font,i % 2 0 ? Rgba32.HotPink : Rgba32.Red,wenXY,TextGraphicsOptions.Default);}});                //保存到图片                image.Save(outImgPath);}} 通过简单的调用 GetValidCode(我是神牛);return Page(); 能得到如图验证码图片的效果 文字看起来好像在点的前面不过没关系只需要把画点和画字的先后顺序修改下就行了这里不贴图了 结合RazorPage模板展示验证码图片 上面一节是生成了验证码图片当然实际场景中我们是不需要生成验证码物理图片的只需要返回一个流或base64等方式输出到web界面上就行了我们可以来看看 ImageTPixel 保存时候的扩展方法 好吧有点多我们只需要明白她能转base64stream保存为图片等就行了这里我们将用到 SaveAsPng(Stream) 方法然后获取他的byte[]如下代码 /// summary/// 画点画字验证码byte[]          /// /summary/// param namecontent验证码/param/// param nameoutImgPath输出图片路径/param/// param namefontFilePath字体文件/param/// param namex图片宽度/param/// param namey图片高度/parampublic byte[] GetValidCodeByte(                    string content 我是神牛,                    string fontFilePath D:\F\学习\vs2017\netcore\Study.AspNetCore\WebApp02-1\wwwroot\bak\STKAITI.TTF,                    int xx 150, int yy 25){            var bb default(byte[]);            try{           var dianWith 1; //点宽度var xx_space 10; //点与点之间x坐标间隔var yy_space 5; //y坐标间隔var wenZiLen content.Length; //文字长度var maxX xx / wenZiLen; //每个文字最大x宽度var prevWenZiX 0; //前面一个文字的x坐标var size 16;//字体大小                //字体var install_Family new FontCollection().Install(fontFilePath                  //C:\Windows\Fonts\STKAITI.TTF   //windows系统下字体文件                  );                             var font new Font(install_Family, size); //字体                //点坐标var listPath new ListIPath();                for (int i 0; i xx / xx_space; i){                    for (int j 0; j yy / yy_space; j){                        var position new Vector2(i * xx_space, j * yy_space);                        var linerLine new LinearLineSegment(position, position);                        var shapesPath new SixLabors.Shapes.Path(linerLine);listPath.Add(shapesPath);}}                 //画图using (ImageRgba32 image new ImageRgba32(xx, yy)) //画布大小                {image.Mutate(x {                    var imgProc x;                        //逐个画字for (int i 0; i wenZiLen; i){                            //当前的要输出的字var nowWenZi content.Substring(i, 1);                            //文字坐标var wenXY new Vector2();                            var maxXX prevWenZiX (maxX - size);wenXY.X new Random().Next(prevWenZiX, maxXX);wenXY.Y new Random().Next(0, yy - size);prevWenZiX Convert.ToInt32(Math.Floor(wenXY.X)) size;                            //画字                            imgProc.DrawText(nowWenZi,   //文字内容                                   font,i % 2 0 ? Rgba32.HotPink : Rgba32.Red,wenXY,TextGraphicsOptions.Default);}                        //画点 imgProc.BackgroundColor(Rgba32.WhiteSmoke). //画布背景                                     Draw(Pens.Dot(Rgba32.HotPink, dianWith),   //大小new SixLabors.Shapes.PathCollection(listPath) //坐标集合                                 );});                    using (MemoryStream stream new MemoryStream()){image.SaveAsPng(stream);bb stream.GetBuffer();}}}                    catch (Exception ex){}            return bb;} 该方法返回了一个byte[]数组然后通过HttpGet方式请求Razor接口前端就能够获取到这个验证码图片byte[]了 /// summary/// Get获取验证码图片byte[]         /// /summary/// returns/returnspublic FileResult OnGetValidCode(){            var codebb GetValidCodeByte(DateTime.Now.ToString(mmssfff));            return File(codebb, image/png);} 我们通过get请求获取验证码 http://localhost:1120/login?handlerValidCode 然后得到如图效果 本篇内容到此就结束了如果对您有好的帮助不妨点个“赞”一起努力推动NetCore发展吧谢谢。 原文地址 http://www.cnblogs.com/wangrudong003/p/7656842.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.huolong8.cn/news/222381/

相关文章:

  • 做任务反佣金的网站百度收录什么网站吗
  • 电子商务网站开发常见门户网站建设工作总结
  • 四大门户网站的优缺点wordpress怎么qq登录地址
  • 网站备案协议书网站开发与设计是什么
  • 吉安网站建设公司火鸟门户系统
  • 免费静态网站托管平台新手跨境电商怎么做
  • 广州平台网站搭建购物网站开发需求分析
  • 物流企业网站建设与管理规划书网站可以不备案吗
  • 网上能免费做网站发布叼淄博网站制作设计公司
  • 重庆低价网站建设网站如何制作浙江
  • 咋样查看网站用什么编程语言做的做建材营销型网站
  • 广州网站快速制作在线作图网
  • 学做家庭树网站店铺网站平台建设方案
  • 393网站哪个电商平台好做
  • 网站开发年薪一个企业网站如何能放到互联网上 vps
  • 网站建设合同2018网站站内推广
  • wdcp 默认网站服务器注册
  • 网站建设申请域名搜索优化公司
  • 免费网站建设网站有那些株洲网络营销推广哪家好
  • 邵阳网站制作建设电子商务管理系统
  • 电子商务网站建设意义网站建立的链接不安全怎么解决
  • 电商网站开发价格建设网站一般多钱
  • 重庆住房建设部网站招聘网站是做什麼的
  • 葫岛百度seo网站优化哪家专业
  • dede 网站地图生成陕西网站建设报价
  • 做推广便宜的网站有哪些创意装饰公司
  • 天津河北区做网站流行的网站设计风格
  • 成都网站建设学习wordpress没中文插件
  • 网页制作与网站管理设计师的个人网页设计
  • 网站建设ppt百度文库工作祝福语