【干货】”首个“ .NET Core 验证码组件
前言
?
眾所周知,Dotnet Core目前沒有圖形API,以前的System.Drawing程序集并沒有包含在Dotnet Core 1.0環(huán)境中。不過在dotnet core labs項(xiàng)目里可以見到MS已經(jīng)在移植這個(gè)項(xiàng)目,不過目前的版本只能在Windows上和NET541+或DNX環(huán)境中才可以使用。
不過在dotnetConf的第二天有一個(gè)叫做SkiaSharp的開源項(xiàng)目被提及;它是Google開源的跨平臺(tái)2D圖形API,Skia的.NET封裝;目前只能在Full Framework上運(yùn)行,不過它以后會(huì)支持Core。
?
現(xiàn)狀
據(jù)我了解,Dotnet Core目前沒有可用的驗(yàn)證碼組件可用,原因就是沒有Core的圖形接口。所以我的方案是通過開源的圖形庫來對(duì)dotnet core進(jìn)行支持。
使用CImg開源庫
CImg 庫是一個(gè)免費(fèi)、開源的圖像處理C++庫,名稱原意是 Cool Image,正如其名,CImg是一個(gè)非常優(yōu)秀、功能強(qiáng)大、代碼簡潔、使用方便的C++ 圖像處理庫。它不僅非常適合科學(xué)家、研究生做科研時(shí)使用,也適合在工業(yè)應(yīng)用工程開發(fā)中使用,更適合的是,對(duì)于有志于開發(fā)簡潔、高效、功能強(qiáng)大的圖像處理庫的人而言,CImg的源碼是不可多得的學(xué)習(xí)和參考資料。
CImg 官網(wǎng):http://cimg.sourceforge.net/
?
可移植性:它完全兼容于操作系統(tǒng)如Windows, Unix, Linux, MacOS X, *BSD...,也完全兼容與編譯器如 VC++, g++, icc...等,具有高度的可移植性。
?
輕便性:CImg 非常輕便,整個(gè)庫只用一個(gè)文件:cimg.h。任何C++應(yīng)用程序只需要將該頭文件包含進(jìn)工程中即可使用該庫的全部功能。它只定義了四了類(模板)和兩個(gè)名稱空間。該庫只依賴與標(biāo)準(zhǔn)C++和STL,只在顯示類部分依賴與操作系統(tǒng)的GDI,再也不依賴任何其他的外部庫。
C++封裝:
我把繪圖邏輯都放到了一個(gè)C++項(xiàng)目中,再用Core項(xiàng)目使用DllImport進(jìn)行調(diào)用。
而且想到跨平臺(tái)在Win下我們使用Win32的DLL庫進(jìn)行編譯,在Linux下使用g++直接對(duì)源代碼進(jìn)行鏈接編譯;?
下面是項(xiàng)目中最主要的CaptchaImage.cpp,Win32下它會(huì)被放到項(xiàng)目中
CaptchaImage.cpp
頭文件:
CaptchaImage.h
這里為了跨平臺(tái)編譯我將stdafx.h文件進(jìn)行了修改如下:
stdafx.h
Dotnet Core平臺(tái)封裝:
?
LibCaptchaImageWarp.cs
?
編譯:
Win32編譯就不用說了,直接在VS2015里編譯就好,但是一定要注意的是,要編譯為X64平臺(tái)的目標(biāo)代碼,因?yàn)槲覀兊腄otnet Core只支持x64平臺(tái);
主要說下Linux編譯,目前我只在Ubuntu 14.04進(jìn)行了編譯測(cè)試,編譯時(shí)CImg依賴也X11,所以要在編譯環(huán)境中安裝X11開發(fā)庫,當(dāng)然Ubuntu也需要64位;
sudo apt-get install libx11-dev接下下是編譯:
把那個(gè)Win32項(xiàng)目Copy到Linux中,然后Bash到目錄下執(zhí)行:
g++ CaptchaImage.cpp -fPIC -shared -o libcaptchaimage.so然后當(dāng)你發(fā)布程序時(shí)一定要將libcaptachaImageWarp.dll 和 Win32 Dll 或?libcaptchaimage.so 文件一起放到程序執(zhí)行目錄。
最后:
看看效果吧:
驗(yàn)證碼源碼: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是一個(gè)基于Core和Owin的框架,項(xiàng)目沒有依賴微軟的MVC框架,支持在.net 4.5和Mono上直接SelfHost或使用Tinyfox跨平臺(tái)運(yùn)行, 也支持在Dotnet Core 1.0 RC2 實(shí)現(xiàn)跨平臺(tái)運(yùn)行; 框架剛剛寫出來還沒有文檔,請(qǐng)大家見諒。
歡迎大家Star和Fork
原文地址:http://www.cnblogs.com/maxzhang1985/p/5584528.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的【干货】”首个“ .NET Core 验证码组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DotNet Core 介绍
- 下一篇: asp.net MVC 应用程序的生命周