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步:运行测试

     

  • 相关阅读:
    java ssl https 连接详解 生成证书
    mysql实战优化之四:mysql索引优化
    mysql实战优化之五: 更新/插入优化 sql优化
    mysql实战优化之六:Order by优化 sql优化、索引优化
    mina2中IoHandler
    I/O通信模型(BIO,NIO,AIO)
    mina框架详解
    转:架构师于小波:魅族实时消息推送架构
    支付业务的数据库表的设计
    实战 TestNG 监听器
  • 原文地址:https://www.cnblogs.com/tshaoguo/p/10143456.html
Copyright © 2011-2022 走看看