node.js実装ピクチャ検証コード

2828 ワード

nodeでweb開発をすると検証コードが必要なところが多いですが、githubで検索すると、node-captchaなどのクラスライブラリがあり、第三者のグラフィック処理ライブラリやソフトウェアに依存する必要があります.私がcarioというグラフィックライブラリをインストールしたとき、本当に苦労しましたが、実は私たちはこれらのグラフィックライブラリのわずかな機能しか使いませんでした.例えば、画像のサイズを変更して裁断したり、検証コードを生産したりします.
まずCImgというc++のグラフィックライブラリを紹介しましょう.CImgはプラットフォームをまたぐC++の画像処理ライブラリで、ロード、処理、表示、保存などの一連の機能を提供しています.最も魅力的なのはグラフィックライブラリ全体がCImgであることです.hこのファイルは、非常に携帯性が高く、環境にやさしく、どこに持って行ってもコンパイルして使用することができ、インストールする必要がありません.そこで私はこのCImgグラフィックライブラリを利用して簡単なdemoを作りたいと思って、検証コードという機能を実現することから始めて、もちろんこのライブラリを完全に利用して画像などの他の機能を裁断することができます.
ccapモジュールはCImgグラフィックスライブラリのパッケージに基づいてnodeで使用できるようにしており、CImgグラフィックスライブラリの携帯性のため、ccapモジュールは他のサードパーティグラフィックスライブラリやソフトウェアに全く依存せずに独立して動作することができ、簡単な検証コードを生成したいだけであればrequireというccapモジュールであればよい.
1、インストール:汎用方法:npm install ccapまたはgithubを通じてダウンロードし、アドレス:https://github.com/DoubleSpout/ccap注意:インストールプロセスでエラーが発生する可能性があります.エラー・プロンプトに従って依存パッケージをインストールしてください.
2、性能:2 cpuのlinux 64ビットサーバー上で認証コードを生成する速度は1200回/秒に達することができ、テスト生成のピクチャはBMPで、jpegのピクチャ認証コードの生成速度は約600回/秒である
3、宣言方法:
var ccap = require('ccap');

var captcha1 = ccap();

var captcha2 = ccap(width, height, offset);

var captcha3 = ccap({

    width:256,//set width,default is 256

上記のコードでccapクラスをインスタンス化できます.1、いかなるパラメータも渡さず、すべてデフォルトのパラメータを使用して認証コード2を生成し、幅、高さ、オフセットのみをインスタンス化し、ピクチャのサイズを調整し、ピクチャ中の文字の間隔3と、オブジェクトを伝達し、幅、高さ、オフセットのほか、ピクチャの品質と乱数を生成する方法も伝達する.ccapモジュールは、カスタム関数returnの文字列に基づいてピクチャ検証コードの内容として使用され、デフォルトは0-9であり、A-Zの6ビットは文字列として使用されます.
理論的には多くの異なるccapの例を生産することができ、それらの間には互いに影響がないため、clusterによってマルチプロセスのnodeを開き、検証コードを同時に生産しても相互ロックの影響はない.
ピクチャ品質はjpegピクチャにのみ有効であり、jpegのlibライブラリがインストールされていない場合はbmp非圧縮グラフィックしか使用できず、体積は比較的大きいが、生成速度は比較的速い.
4、使用方法、get():
height:60,//set height,default is 60

    offset:40,//set text spacing,default is 40

    quality:100,//set pic quality,default is 50

    generate:function(){//Custom the function to generate captcha text

         //generate captcha text here

         return text;//return the captcha text

    }

});

ccapクラスをインスタンス化すると、captchaオブジェクトが得られます.このオブジェクトには対外メソッドが1つしかありません.get()です.このメソッドは呼び出すたびに検証コードbufferと対応するtext文字列の内容を返し、配列に保存します.このような構造です.
["captcha text","picture buffer"]

5、簡単なウェブの例:
var http = require('http');

var ccap = require('ccap')();//Instantiated ccap class 

http.createServer(function (request, response) {

    if(request.url == '/favicon.ico')return response.end('');//Intercept request favicon.ico

    var ary = ccap.get();

    var txt = ary[0];

    var buf = ary[1];

    response.end(buf);

    console.log(txt);

}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

注意:一部のコードパラメータは、自分の環境に応じて自分で変更できます.
転載先:http://www.9958.pw/post/nodejscapp