This is a NativeScript cross platform ZXing library for IOS and Android.
My code is (c)2016-2018, Master Technology. Everything is LICENSED under the APACHE 2.0 License, including libraries, meaning you are free to include this in any type of program -- However for entities that need a support contract, changes, enhancements and/or a commercial license please contact me at http://nativescript.tools.
I also do contract work; so if you have a module you want built or sponsored for NativeScript (or any other software projects) feel free to contact me nathan@master-technology.com.
Same plugin works on both NativeScript 2.x and 3.x
Run tns plugin add nativescript-zxing
in your ROOT directory of your project.
var ZXing = require('nativescript-zxing');
var zx = new ZXing();
var img = zx.createBarcode({encode: "Text", height: 100, width: 100, format: ZXing.QR_CODE});
// Do something with the image
This creates a barcode image of 100x100 with the "Text" encoded into the QR Code barcode type. On iOS this will return a UImage which can be assigned to a NativeScript Image; on Android it will return a Bitmap which also can be assigned to a Image. (See Demo)
var ZXing = require('nativescript-zxing');
var zx = new ZXing();
// Options are TOTALLY optional
var options = {tryHarder: true, formats: [ZXing.QR_CODE, ZXing.ITF]};
var results = zx.decodeBarcode(source, options);
if (!results) {
console.log("Unable to decode barcode");
} else {
console.log("Barcode format", results.format);
console.log("Barcode value", results.barcode);
}
Please note:
- The Options are totally optional, if you don't pass in any options it will attempt to decode all known barcode formats. If you do pass in the valid formats; the iOS side actually will ONLY use the formats specified; the Android side will still do some auto-detection.
- The tryHarder option will cause the decoding to use a more CPU intensive routine; which might find more barcodes.
- The formats; is just a simple array of any of the supported barcode types listed below.
The source image for Android must be a bitmap; the source image for iOS must be a CGImage. (See Demo)
Please see the demo source https://github.com/NathanaelA/nativescript-zxing/tree/master/demo for how to read, write and convert between image formats. In addition when you SAVE on Android it might take a few minutes before the media indexer will actually see the new image to put it in the image picker.
ZXing supports the following Barcode types:
- QR_CODE
- UPC_A
- UPC_E
- AZTEC
- CODABAR
- CODE_39
- CODE_93
- CODE_128
- DATA_MATRIX
- EAN_8
- EAN_13
- ITF
- MAXICODE
- PDF_417
If you are using nativescript-barcodescanner these two plugins conflict because they use the same library to do the barcode work. The NativeScript tool unfortunately is not smart enough to detect this, and so you will get a weird error during the build.
The easiest fix if you want to use both of them is to open up where the plugin was installed (node_modules/nativescript-zxing) and then delete the platforms/android folder inside my plugin.
My code will then automatically use the version of zxing that nativescript-barcodescanner has included in it.