File: README.md

Recommend this page to a friend!
  Classes of Andras Toth   WebCodeCamJS   README.md   Download  
File: README.md
Role: Auxiliary data
Content type: text/markdown
Description: Auxiliary data
Class: WebCodeCamJS
Scan barcodes and qrcodes with a Webcam
Author: By
Last change: version 2.7.0

Browser compatibilitz
Date: 3 years ago
Size: 8,358 bytes
 

Contents

Class file image Download

WebCodeCamJS & WebCodeCamJQuery

New versions of popular WebCodeCam jQuery plugin<br>

- Very simple usage
- Some option for optimal result
- Quick implementation
- Optimized for all modern browsers

Advantages compared to the previous version:<br>

- Built in camera selector menu creation
- Faster
- Lower CPU and Memory usage
- More configurable

  • [Homepage] - Home page, demonstration

<img src = "compatibility.jpg" width="100%"/> <img src = "demo.jpg" width="100%"/>

Version

2.7.0

- Extend Browser compatibility

Version

2.1.0

- Extend BuildSelectMenu function

Version

2.0.5

- Add parameter tryVertical to options
- Some minor modification

Version

2.0.1

- Add parameter successTimeout to options
- Add parameter codeRepetition to options

Version

2.0.0

- Add UPC-A, UPC-E support, result function return value changed!

Version

1.9.1

- Add default cameraindex parameter to buildSelectMenu, optional

Version

1.9.0

- Add function: decode image from url

Version

1.8.0

- Add function: decode local image

Version

1.7.0

- Add jquery version (WebCodeCamJQuery)

Version

1.5.0

- Optimized for all modern browsers
- Refactor functions

Version

1.0.0

- Very simple usage
- Some option for optimal result
- Quick implementation

Included decoders

barcode decoder ([DecoderWorker.js])

qr-decoder ([qrcodelib.js])

Required HTML & Javascript example

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Demo</title>
    </head>
    <body>
        <h3>Simple initialization with default settings</h3>
        <hr>
        <canvas></canvas>
        <hr>
        <ul></ul>
        <script type="text/javascript" src="js/qrcodelib.js"></script>
        <script type="text/javascript" src="js/webcodecamjs.js"></script>
        <!-- 
            Using jquery version:
            <script type="text/javascript" src="js/jquery.js"></script>
            <script type="text/javascript" src="js/qrcodelib.js"></script>
            <script type="text/javascript" src="js/webcodecamjquery.js"></script>
        -->
        <script type="text/javascript">
            var txt = "innerText" in HTMLElement.prototype ? "innerText" : "textContent";
            var arg = {
                resultFunction: function(result) {
                    /*
                        result.format: code format,
                        result.code: decoded string,
                        result.imgData: decoded image data
                    */
                    var aChild = document.createElement('li');
                    aChild[txt] = result.format + ': ' + result.code;
                    document.querySelector('body').appendChild(aChild);
                }
            };
    /-------------------------------------- Available parameters --------------------------------------/
    var options = {
        DecodeQRCodeRate: 5,                    // null to disable OR int > 0 !
        DecodeBarCodeRate: 5,                   // null to disable OR int > 0 !
        successTimeout: 500,                    // delay time when decoding is succeed
        codeRepetition: true,                   // accept code repetition true or false
        tryVertical: true,                      // try decoding vertically positioned barcode true or false
        frameRate: 15,                          // 1 - 25
        width: 320,                             // canvas width
        height: 240,                            // canvas height
        constraints: {                          // default constraints
            video: {
                mandatory: {
                    maxWidth: 1280,
                    maxHeight: 720
                },
                optional: [{
                    sourceId: true
                }]
            },
            audio: false
        },
        flipVertical: false,                    // boolean
        flipHorizontal: false,                  // boolean
        zoom: -1,                               // if zoom = -1, auto zoom for optimal resolution else int
        beep: 'audio/beep.mp3',                 // string, audio file location
        decoderWorker: 'js/DecoderWorker.js',   // string, DecoderWorker file location
        brightness: 0,                          // int
        autoBrightnessValue: false,             // functional when value autoBrightnessValue is int
        grayScale: false,                       // boolean
        contrast: 0,                            // int
        threshold: 0,                           // int 
        sharpness: [],      // to On declare matrix, example for sharpness ->  [0, -1, 0, -1, 5, -1, 0, -1, 0]
        resultFunction: function(result) {
            /*
                result.format: code format,
                result.code: decoded string,
                result.imgData: decoded image data
            */
            alert(result.code);
        },
        cameraSuccess: function(stream) {           //callback funtion to camera success
            console.log('cameraSuccess');
        },
        canPlayFunction: function() {               //callback funtion to can play
            console.log('canPlayFunction');
        },
        getDevicesError: function(error) {          //callback funtion to get Devices error
            console.log(error);
        },
        getUserMediaError: function(error) {        //callback funtion to get usermedia error
            console.log(error);
        },
        cameraError: function(error) {              //callback funtion to camera error  
            console.log(error);
        }
    };

    /---------------------------- Example initializations Javascript version ----------------------------/
    new WebCodeCamJS("canvas").init(arg);
    /OR/
    var canvas = document.querySelector('#webcodecam-canvas');
    new WebCodeCamJS(canvas).init();
    /OR/
    new WebCodeCamJS('#webcodecam-canvas').init();

    /------------------------ Example initializations jquery & Javascript version ------------------------/
    var decoder = new WebCodeCamJS('#webcodecam-canvas');

    var decoder = $("#webcodecam-canvas").WebCodeCamJQuery(args).data().plugin_WebCodeCamJQuery;

    decoder.buildSelectMenu('#camera-select', sel); //sel : default camera optional
    /* Chrome & MS Edge: build select menu
    *  Firefox: the default camera initializes, return decoder object 
    */
    //simple initialization
    decoder.init();
    /Select environment camera if available/
    decoder.buildSelectMenu('#camera-select', 'environment|back').init(args);
    /Select user camera if available/
    decoder.buildSelectMenu('#camera-select', 'user|front').init(args);
    /Select camera by name/
    decoder.buildSelectMenu('#camera-select', 'facecam').init(args);
    /Select first camera/
    decoder.buildSelectMenu('#camera-select', 0).init(args);
    /Select environment camera if available, without visible select menu/
    decoder.buildSelectMenu(document.createElement('select'), 'environment|back').init().play();   

    /--------------------------------------- Available Functions: ----------------------------------------/
    /camera stop & delete stream/
    decoder.stop();
    /camera play, restore process/
    decoder.play();
    /get current image from camera/
    decoder.getLastImageSrc();
    /decode local image/
    /if url is defined download image before staring open process/
    decoder.decodeLocalImage(url);
    /get optimal zoom/
    decoder.getOptimalZoom();
    /Configurable options/
    decoder.options['parameter'];
    /* Example: 
     decoder.options.brightness = 20;         - set brightness to 20
     decoder.options.DecodeQRCodeRate = null; - disable qrcode decoder
    */
        </script>
    </body>
</html>

License

MIT

Author: Tóth András

http://atandrastoth.co.uk/

2015-06-10

[Homepage]:http://atandrastoth.co.uk/main/pages/plugins/webcodecamjs/ [WebCodeCamJS]:https://andrastoth.github.io/webcodecamjs/ [DecoderWorker.js]:https://github.com/EddieLa/BarcodeReader [qrcodelib.js]:https://github.com/LazarSoft/jsqrcode