zoukankan      html  css  js  c++  java
  • 在.net core web项目中生成图片验证码

    第1步:添加SkiaSharp包引用

    Install-Package SkiaSharp

    第2步:编写生成图片验证码的代码

    using SkiaSharp; //在类文件头部添加引用

    public IActionResult Code()

    {

        string CodeText = "3bm7"; //实际的项目中不能写死

        var charList = CodeText.ToList();

        SKBitmap bmp = new SKBitmap(80,30);

        using (SKCanvas canvas = new SKCanvas(bmp))

        {

            //背景色

            canvas.DrawColor(SKColors.White);

     

            using (SKPaint sKPaint = new SKPaint())

            {

                sKPaint.TextSize = 16;//字体大小

                sKPaint.IsAntialias = true;//开启抗锯齿                  

                sKPaint.Typeface = SKTypeface.FromFamilyName("微软雅黑");

                SKRect size = new SKRect();

    //计算文字宽度以及高度

                sKPaint.MeasureText(charList[0].ToString(), ref size);

                float temp = (bmp.Width / 4 - size.Size.Width) / 2;

                float temp1 = bmp.Height - (bmp.Height - size.Size.Height) / 2;

                Random random = new Random();

     

                //画文字

                for (int i = 0; i < 4; i++)

                {

                   sKPaint.Color = new SKColor((byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255));

                            canvas.DrawText(charList[i].ToString(), temp + 20 * i, temp1, sKPaint);

               }

                //画干扰线

                for (int i = 0; i < 5; i++)

                {

                    sKPaint.Color = new SKColor((byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255));

                            canvas.DrawLine(random.Next(0, 40), random.Next(1, 29), random.Next(41, 80), random.Next(1, 29), sKPaint);

                }

            }

            //页面展示图片

            using (SKImage img = SKImage.FromBitmap(bmp))

            {

                using (SKData p = img.Encode())

                {

                    return File(p.ToArray(), "image/Png");

                }

            }

        }

    }

    第3步:运行测试

     

  • 相关阅读:
    Asp.Net MVC 路由
    EntityFramework执行SQL语句
    partial类与[MetadataType(typeof(类名))]有什么区别?
    Asp.net mvc + .net ef database first 或 model first 时如何添加验证特性
    Entity Framework 学习总结之一:ADO.NET 实体框架概述
    C#中dynamic的正确用法
    Func与Action
    SVN的使用和问题解决方法总结
    微信小程序---绘图
    微信小程序---动画
  • 原文地址:https://www.cnblogs.com/tshaoguo/p/10143456.html
Copyright © 2011-2022 走看看