【干货】”首个“ .NET Core 验证码组件
来源:互联网 发布:深圳启讯网络骗局 编辑:程序博客网 时间:2024/06/11 03:43
前言
众所周知,Dotnet Core目前没有图形API,以前的System.Drawing程序集并没有包含在Dotnet Core 1.0环境中。不过在dotnet core labs项目里可以见到MS已经在移植这个项目,不过目前的版本只能在Windows上和NET541+或DNX环境中才可以使用。
不过在dotnetConf的第二天有一个叫做SkiaSharp的开源项目被提及;它是Google开源的跨平台2D图形API,Skia的.NET封装;目前只能在Full Framework上运行,不过它以后会支持Core。
现状
据我了解,Dotnet Core目前没有可用的验证码组件可用,原因就是没有Core的图形接口。所以我的方案是通过开源的图形库来对dotnet core进行支持。
使用CImg开源库
CImg 库是一个免费、开源的图像处理C++库,名称原意是 Cool Image,正如其名,CImg是一个非常优秀、功能强大、代码简洁、使用方便的C++ 图像处理库。它不仅非常适合科学家、研究生做科研时使用,也适合在工业应用工程开发中使用,更适合的是,对于有志于开发简洁、高效、功能强大的图像处理库的人而言,CImg的源码是不可多得的学习和参考资料。
CImg 官网:http://cimg.sourceforge.net/
可移植性:它完全兼容于操作系统如Windows, Unix, Linux, MacOS X, *BSD...,也完全兼容与编译器如 VC++, g++, icc...等,具有高度的可移植性。
轻便性:CImg 非常轻便,整个库只用一个文件:cimg.h。任何C++应用程序只需要将该头文件包含进工程中即可使用该库的全部功能。它只定义了四了类(模板)和两个名称空间。该库只依赖与标准C++和STL,只在显示类部分依赖与操作系统的GDI,再也不依赖任何其他的外部库。
C++封装:
我把绘图逻辑都放到了一个C++项目中,再用Core项目使用DllImport进行调用。
而且想到跨平台在Win下我们使用Win32的DLL库进行编译,在Linux下使用g++直接对源代码进行链接编译;
下面是项目中最主要的CaptchaImage.cpp,Win32下它会被放到项目中
CaptchaImage.cpp
头文件:
CaptchaImage.h
这里为了跨平台编译我将stdafx.h文件进行了修改如下:
stdafx.h
Dotnet Core平台封装:
LibCaptchaImageWarp.cs
编译:
Win32编译就不用说了,直接在VS2015里编译就好,但是一定要注意的是,要编译为X64平台的目标代码,因为我们的Dotnet Core只支持x64平台;
主要说下Linux编译,目前我只在Ubuntu 14.04进行了编译测试,编译时CImg依赖也X11,所以要在编译环境中安装X11开发库,当然Ubuntu也需要64位;
sudo apt-get install libx11-dev
接下下是编译:
把那个Win32项目Copy到Linux中,然后Bash到目录下执行:
g++ CaptchaImage.cpp -fPIC -shared -o libcaptchaimage.so
然后当你发布程序时一定要将libcaptachaImageWarp.dll 和 Win32 Dll 或 libcaptchaimage.so 文件一起放到程序执行目录。
最后:
看看效果吧:
验证码源码:https://github.com/maxzhang1985/YOYOFx/tree/master/Native
Demo:https://github.com/maxzhang1985/YOYOFx/tree/master/CoreHost
QQ群:214741894
Demo和源码在:https://github.com/maxzhang1985/YOYOFx
YOYOFx是一个基于Core和Owin的框架,项目没有依赖微软的MVC框架,支持在.net 4.5和Mono上直接SelfHost或使用Tinyfox跨平台运行, 也支持在Dotnet Core 1.0 RC2 实现跨平台运行; 框架刚刚写出来还没有文档,请大家见谅。
欢迎大家Star和Fork
原文地址:http://www.cnblogs.com/maxzhang1985/p/5584528.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- 【干货】”首个“ .NET Core 验证码组件
- .net core权限验证
- .net core借助sendCloud实现邮件验证码发送
- .net core 借助容联云实现短信验证码
- ASP.NET CORE 项目实战 ---图形验证码的实现
- .NET Core中文分词组件jieba.NET Core
- asp.net core开源组件练习
- asp.net core源码飘香:Logging组件
- Asp.Net core 视图组件ViewComponent
- .NET Core 2.0 开源Office组件 NPOI
- .NET Core 2.0 开源Office组件 NPOI
- ASP.NET Core Razor 视图组件
- ASP.NET Core Razor 视图组件
- ASP.NET Core Razor 视图组件
- .NET Core 2.0 开源Office组件 NPOI
- asp.net core源码飘香:Logging组件
- asp.net core源码飘香:Options组件
- asp.net core源码飘香:Configuration组件
- 教你实践ASP.NET Core Authorization(免看文档教程)
- RAML用户应遵循的C#与Web API代码生成模式
- asp.net core 中间件详解及项目实战
- 第二章 指南(4.3)添加 View
- asp.net MVC 应用程序的生命周期
- 【干货】”首个“ .NET Core 验证码组件
- DotNet Core 介绍
- 第二章指南(4.2)添加 Controller
- 记录不同浏览器的user-Agent信息
- 厚积薄发,拥抱 .NET 2016
- ASP.NET Core MVC 与 Visual Studio 入门
- h5页面 pc端html 调用QQ群
- 用 Visual Studio 发布一个 Azure 云 Web 应用程序
- SuperSocket与Netty之实现protobuf协议,包括服务端和客户端