zoukankan      html  css  js  c++  java
  • .Net Core 之 图形验证码 本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。

    本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。

    复制代码
    通过测试的系统:
    Windows 8.1 64bit
    Ubuntu Server 16.04 LTS 64bit
    Fedora 24 64bit
    CentOS 7.2 64bit
    
    可以实现以下功能:
    Open jpg, bmp, ico, png
    Save jpg, bmp, ico, png
    Resize image
    Draw graphics with brush and pen
    Open font and draw string
    复制代码

    以上是官方给的资料。


    No.1 项目引入ZKWeb.System.Drawing

    NuGet引入包,不会的自己百度。


    No.2 简单的验证码生成

    复制代码
    int codeW = 80;
    int codeH = 30;
    int fontSize = 16;
    Random rnd = new Random();
    //颜色列表,用于验证码、噪线、噪点 
    Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
    //字体列表,用于验证码 
    string[] font = { "Times New Roman" };
    //验证码的字符集,去掉了一些容易混淆的字符 
    
    //写入Session、验证码加密
    //WebHelper.WriteSession("session_verifycode", Md5Helper.MD5(chkCode.ToLower(), 16));
    //创建画布
    Bitmap bmp = new Bitmap(codeW, codeH);
    Graphics g = Graphics.FromImage(bmp);
    g.Clear(Color.White);
    //画噪线 
    for (int i = 0; i < 1; i++)
    {
        int x1 = rnd.Next(codeW);
        int y1 = rnd.Next(codeH);
        int x2 = rnd.Next(codeW);
        int y2 = rnd.Next(codeH);
        Color clr = color[rnd.Next(color.Length)];
        g.DrawLine(new Pen(clr), x1, y1, x2, y2);
    }
    //画验证码字符串 
    for (int i = 0; i < chkCode.Length; i++)
    {
        string fnt = font[rnd.Next(font.Length)];
        Font ft = new Font(fnt, fontSize);
        Color clr = color[rnd.Next(color.Length)];
        g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 18, (float)0);
    }
    //将验证码图片写入内存流,并将其以 "image/Png" 格式输出 
    MemoryStream ms = new MemoryStream();
    try
    {
        bmp.Save(ms, ImageFormat.Png);
        return ms.ToArray();
    }
    catch (Exception)
    {
        return null;
    }
    finally
    {
        g.Dispose();
        bmp.Dispose();
    }
    复制代码

    No.3 发布部署运行

    直接上图,不会的看这里http://www.cnblogs.com/niao/p/6057860.html

    image


    注意:验证码Windows下生成无压力,我用的Ubuntu 14,需要安装gdi包,运行日志中会有提示。

    安装方法:

    Ubuntu 16.04:

    apt-get install libgdiplus
    cd /usr/lib
    ln -s libgdiplus.so gdiplus.dll

    Fedora 23:

    dnf install libgdiplus
    cd /usr/lib64/
    ln -s libgdiplus.so.0 gdiplus.dll

    CentOS 7:

    复制代码
    yum install autoconf automake libtool
    yum install freetype-devel fontconfig libXft-devel
    yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel
    yum install glib2-devel cairo-devel
    git clone https://github.com/mono/libgdiplus
    cd libgdiplus
    ./autogen.sh
    make
    make install
    cd /usr/lib64/
    ln -s /usr/local/lib/libgdiplus.so gdiplus.dll
    复制代码

    88..

  • 相关阅读:
    移动端测试小技巧分享
    【转】GT 的性能测试方案解析
    【测试工具】Macaca 自动遍历器 NoSmoke
    接口自动化测试
    【学习资料】 持续集成---测试自动化学习
    pipeline-安全测试
    【转】Appium 优化版
    SpringBoot2(003):简要回顾“HelloWorld” web 工程
    idea创建同名的maven工程时报错:Failed to create a Maven project 'xxx/pom.xml' already exists in VFS
    Maven:Unable to import maven project: See logs for details
  • 原文地址:https://www.cnblogs.com/webenh/p/6185084.html
Copyright © 2011-2022 走看看