Node.jsに基づくバーコード認識プログラムを構築する.
この記事では、Windows、Linux、OS XをサポートするDynampsoft Barrcorde Reader SDKをカプセル化し、このモジュールをどのように統合してオンラインのバーコード読み取りアプリケーションを実現するかを実証する非常に簡単な方法を示します.
JavaScriptを使って複雑なサーバ端末のWebアプリケーションを開発するために、Nodeを選んでウェブサイトを構築するWeb開発者が増えています.異なるプラットフォームの下でNodeの機能を拡張するために、Nodeは開発者がC/C++を使って拡張を作成することを許可する.
紹介する
Dynampsoft Barcode ReaderはWindows、Linux、OS Xにバーコード解析のC/C++共有ライブラリを提供します.その最大の利点は、JavaScript、Python、Java、Ruby、PHPなど、多種類の高級プログラミング言語に適用されます.C/C++APIを一つの拡張としてカプセル化して使えばいいです.どんなプログラミング言語でも、結局は簡単なコードだけでバーコードの解析ができます.
1 D/2 Dバーコードタイプ対応 Code 39、Code 93、Code 128、Codabar、Interleaved 2 of 5、EAN-8、EAN-13、UC-A、UPC-E、Industral 2 of 5 QRCode Data Matrix PDF 177 画像のタイプをサポートします. BMP、JPEG、PNG、GIF、TIFF、PDF 実行環境 Windows、Linux&Mac Node Node.jsバーコード拡張
ノード.js拡張は、C/C++で作成された動的リンクの共有オブジェクトを使用する.この分野の技術に触れていなければ、読むことができます. 公式教程 .
拡張機能を作成
dbcというファイルを作成し、メソッドDecodeFileを追加します.
要求: Windows:インストールが必要です. DBR for Windows,Visual Studio,and Python. Linux:インストール DBR for Linux. Mac:インストール DBR for Mac 和 Xcode. node-gypをインストールする:
構成環境:
Nodeのバーコード解析モジュールを構築することに成功しました.簡単なバーコード読み取りアプリケーションを作成できます.
インストール Express 和 Formidable:
Windows、Linux、Macの下でバーコード読み取りアプリケーションを構築するなら、直接にサンプルプログラムをダウンロードすることができます. Dynamsoft Barcode Readerは直接問い合わせもできます[email protected].
今回は無料の学習圏を紹介します.中はモバイルアプリの開発、css、html、webpack、vue node anglar及び面接リソースなどをまとめています.資料を入手する
JavaScriptを使って複雑なサーバ端末のWebアプリケーションを開発するために、Nodeを選んでウェブサイトを構築するWeb開発者が増えています.異なるプラットフォームの下でNodeの機能を拡張するために、Nodeは開発者がC/C++を使って拡張を作成することを許可する.
紹介する
Dynampsoft Barcode ReaderはWindows、Linux、OS Xにバーコード解析のC/C++共有ライブラリを提供します.その最大の利点は、JavaScript、Python、Java、Ruby、PHPなど、多種類の高級プログラミング言語に適用されます.C/C++APIを一つの拡張としてカプセル化して使えばいいです.どんなプログラミング言語でも、結局は簡単なコードだけでバーコードの解析ができます.
1 D/2 Dバーコードタイプ対応
ノード.js拡張は、C/C++で作成された動的リンクの共有オブジェクトを使用する.この分野の技術に触れていなければ、読むことができます. 公式教程 .
拡張機能を作成
dbcというファイルを作成し、メソッドDecodeFileを追加します.
#include
#include
#include "If_DBR.h"
#include "BarcodeFormat.h"
#include "BarcodeStructs.h"
#include "ErrorCode.h"
using namespace v8;
void DecodeFile(const FunctionCallbackInfo& args) {
} // :619586920 ,
void Init(Handle
JavaScriptから渡されたパラメータを解析します.Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
String::Utf8Value license(args[0]->ToString());
String::Utf8Value fileName(args[1]->ToString());
char *pFileName = *fileName;
char *pszLicense = *license;
__int64 llFormat = args[2]->IntegerValue();
Local cb = Local::Cast(args[3]);
バーコード画像を解析:int iMaxCount = 0x7FFFFFFF;
ReaderOptions ro = {0};
pBarcodeResultArray pResults = NULL;
ro.llBarcodeFormat = llFormat;
ro.iMaxBarcodesNumPerPage = iMaxCount;
DBR_InitLicense(pszLicense);
// Decode barcode image
int ret = DBR_DecodeFile(pFileName, &ro, &pResults);
バーコードを文字列に変換:const char * GetFormatStr(__int64 format)
{
if (format == CODE_39)
return "CODE_39";
if (format == CODE_128)
return "CODE_128";
if (format == CODE_93)
return "CODE_93";
if (format == CODABAR)
return "CODABAR";
if (format == ITF)
return "ITF";
if (format == UPC_A)
return "UPC_A";
if (format == UPC_E)
return "UPC_E";
if (format == EAN_13)
return "EAN_13";
if (format == EAN_8)
return "EAN_8";
if (format == INDUSTRIAL_25)
return "INDUSTRIAL_25";
if (format == QR_CODE)
return "QR_CODE";
if (format == PDF417)
return "PDF417";
if (format == DATAMATRIX)
return "DATAMATRIX";
return "UNKNOWN";
}
結果をv 8オブジェクトに変換:Local barcodeResults = Array::New(isolate);
for (int i = 0; i result = Object::New(isolate);
result->Set(String::NewFromUtf8(isolate, "format"), String::NewFromUtf8(isolate, GetFormatStr(tmp->llFormat)));
result->Set(String::NewFromUtf8(isolate, "value"), String::NewFromUtf8(isolate, tmp->pBarcodeData));
barcodeResults->Set(Number::New(isolate, i), result);
} // :619586920 ,
拡張機能を構築要求:
npm install -g node-gyp
作成 binding.gyp マルチプラットフォームのコンパイルに使用します.{
"targets": [
{
'target_name': "dbr",
'sources': [ "dbr.cc" ],
'conditions': [
['OS=="linux"', {
'defines': [
'LINUX_DBR',
],
'include_dirs': [
"/home/xiao/Dynamsoft/BarcodeReader4.0/Include"
],
'libraries': [
"-lDynamsoftBarcodeReaderx64", "-L/home/xiao/Dynamsoft/BarcodeReader4.0/Redist"
],
'copies': [
{
'destination': 'build/Release/',
'files': [
'/home/xiao/Dynamsoft/BarcodeReader4.0/Redist/libDynamsoftBarcodeReaderx64.so'
]
}]
}],
['OS=="win"', {
'defines': [
'WINDOWS_DBR',
],
'include_dirs': [
"F:/Program Files (x86)/Dynamsoft/Barcode Reader 4.1/Components/C_C++/Include"
],
'libraries': [
"-lF:/Program Files (x86)/Dynamsoft/Barcode Reader 4.1/Components/C_C++/Lib/DBRx64.lib"
],
'copies': [
{
'destination': 'build/Release/',
'files': [
'F:/Program Files (x86)/Dynamsoft/Barcode Reader 4.1/Components/C_C++/Redist/DynamsoftBarcodeReaderx64.dll'
]
}]
}],
['OS=="mac"', {
'defines': [
'MAC_DBR',
],
'include_dirs' : [
"/Applications/Dynamsoft/Barcode/ Reader/ 4.1/Include"
],
'libraries': [
"-lDynamsoftBarcodeReader"
]
}]
]
} // :619586920 ,
]
}
DRBインストールディレクトリをあなたのマシンの実際のディレクトリに置き換えます.構成環境:
node-gyp configure
Macで下記のエラーに遭遇できます.error: xcodeselect: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
解決策は:sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
構築項目:node-gyp build
オンラインバーコード解析Nodeのバーコード解析モジュールを構築することに成功しました.簡単なバーコード読み取りアプリケーションを作成できます.
インストール Express 和 Formidable:
npm install express
npm install formidable
使用 Express 簡単なアプリケーションを作成します.var formidable = require('formidable');
var util = require('util');
var express = require('express');
var fs = require('fs');
var app = express();
var path = require('path');
var dbr = require('./build/Release/dbr');
var http = require('http');
fs.readFile('./license.txt', 'utf8', function(err, data) {
app.use(express.static(__dirname));
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "X-Requested-With, content-type");
res.header("Access-Control-Allow-Credentials", true);
next();
});
var server = app.listen(2019, function() {
var host = server.address().address;
var port = server.address().port;
console.log('listening at http://%s:%s', host, port);
});
});
使用 Formidable フォームから画像データを抽出します.app.post('/upload', function(req, res) {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
var dir = 'uploads';
fs.mkdir(dir, function(err) {
var flag = fields.uploadFlag;
var barcodeType = parseInt(fields.barcodetype);
console.log('flag: ' + flag);
if (flag === '1') { // read barcode image file
fs.readFile(files.fileToUpload.path, function(err, data) {
// save file from temp dir to new dir
var fileName = path.join(__dirname, dir, files.fileToUpload.name);
console.log(fileName);
fs.writeFile(fileName, data, function(err) {
if (err) throw err;
});
});
} else { // read barcode image url
var tmpFileName = path.join(__dirname, dir, 'tmp.jpg');
var tmp = fs.createWriteStream(tmpFileName);
var url = fields.fileToDownload;
console.log('url: ' + url);
http.get(url, function(response) {
response.pipe(tmp);
tmp.on('finish', function() {
tmp.close(function() {
});
});
});
} // :619586920 ,
});
});
});
バーコードモジュールを導入して画像ファイルを解析します.decodeBarcode(res, license, tmpFileName, barcodeType);
実行アプリケーション:node server.js
アクセス http://localhost:2019/index.htm: Windows、Linux、Macの下でバーコード読み取りアプリケーションを構築するなら、直接にサンプルプログラムをダウンロードすることができます. Dynamsoft Barcode Readerは直接問い合わせもできます[email protected].
今回は無料の学習圏を紹介します.中はモバイルアプリの開発、css、html、webpack、vue node anglar及び面接リソースなどをまとめています.資料を入手する