Web開発にノードを使用する際に検証コードが必要な多くの場所が遭遇します。以前は、Githubで検索されていたため、ノードカプテチャなどのクラスライブラリがありました。これらはすべて、サードパーティのグラフィックス処理ライブラリまたはソフトウェアに依存しています。たとえば、グラフィックライブラリCarioをインストールしたとき、それは多くの努力でしたが、実際、写真のサイズの変更とトリミングや検証コードの作成など、これらのグラフィックライブラリの小さな機能を少ししか使用しませんでした。
まず、CIMG C ++グラフィックスライブラリを紹介しましょう。 CIMGは、ロード、処理、表示、保存などの一連の機能を提供するクロスプラットフォームC ++画像処理ライブラリです。最も魅力的なことは、グラフィックライブラリ全体がCIMG.Hファイルの1つにすぎないため、非常にポータブルで、緑で環境に優しいことです。大きなプッシュ依存性をインストールせずに、どこにでもコンパイルして使用できます。そこで、このCIMGグラフィックスライブラリを使用して、検証コードを実装する機能から始めて、簡単なデモを作成したかったのです。もちろん、このライブラリを完全に使用して、写真のトリミングなどの他の機能を実行できます。
CCAPモジュールは、CIMGグラフィックライブラリのカプセル化に基づいており、ノードで使用できるようにします。 CIMGグラフィックスライブラリの携帯性により、CCAPモジュールは、他のサードパーティグラフィックライブラリやソフトウェアに依存することなく、独立して動作できます。言い換えれば、単純な検証コードを生成するだけの場合は、CCAPモジュールを必要とします。
1。インストール:
一般的な方法:NPMインストールCCAP
または、githubからダウンロード、アドレス:https://github.com/doublespout/ccap
注:インストールプロセス中にエラーが発生する可能性があります。エラープロンプトに従って、対応する依存関係パッケージをインストールしてください。
2。パフォーマンス:
2CPU Linux 64ビットサーバーで検証コードを生成する速度は、1200回/秒に達することができます。テストによって生成された画像はBMPです。 JPEG画像検証コード生成速度は、約600回/秒です。
3。宣言方法:
コードコピーは次のとおりです。
var ccap = require( 'ccap');
var captcha1 = ccap();
var captcha2 = ccap(幅、高さ、オフセット);
var captcha3 = ccap({
幅:256、//幅を設定し、デフォルトは256です
CCAPクラスは、上記のコードを介してインスタンス化できます。 1.パラメーターは渡されません。すべてのデフォルトパラメーターを使用して検証コードを生成します。 2.幅、高さ、およびオフセットのみを渡すためにのみインスタンス化し、画像のサイズと画像の文字間の間隔を調整します。オブジェクトを渡します。幅、高さ、オフセットに加えて、画質と乱数を生成する方法も渡します。 CCAPモジュールは、画像検証コードのコンテンツとしてカスタム関数によって返される文字列を使用します。デフォルトは0-9で、AZの6ビット文字列が続きます。
理論的には、多くの異なるCCAPインスタンスを生成でき、互いに影響を与えないため、クラスターを介してマルチプロセスノードを開始し、同時に検証コードを作成したとしても、お互いをロックすることの影響はありません。
画質はJPEG画像でのみ有効です。 JPEG LIBライブラリがインストールされていない場合、BMPの非圧縮グラフィックスのみを使用できます。これは比較的大きいサイズですが、生成速度は比較的高速です。
4。メソッドを使用して、get():
コードコピーは次のとおりです。
高さ:60、//高さの設定、デフォルトは60です
オフセット:40、//テキスト間隔の設定、デフォルトは40です
品質:100、// PICの品質を設定し、デフォルトは50です
生成:function(){//関数をカスタムCAPTCHAテキストを生成します
//ここでCaptchaテキストを生成します
テキストを返します; // captchaテキストを返します
}
});
CCAPクラスをインスタンス化すると、Captchaオブジェクトが取得されます。このオブジェクトには、外部メソッドが1つしかありません。GET()。この方法が呼び出されるたびに、検証コードバッファと対応するテキスト文字列コンテンツを返し、これに似た構造を使用して配列に保存します。
コードコピーは次のとおりです。
["Captcha Text"、 "Picture Buffer"]
5.簡単なWeb例:
コードコピーは次のとおりです。
var http = require( 'http');
var ccap = require( 'ccap')(); //インスタンス化されたCCAPクラス
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);
})。聞く(8124);
console.log( 'http://127.0.0.1:8124/')で実行されているサーバー);
注:一部のコードパラメーターは、独自の環境に従って変更できます。