Advertisement
Tony-S

JavaScript HTML5 QR

Oct 13th, 2011
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Lizenz
  2. //---------------------------------------------------------------------
  3. // JavaScript-HTML5 QRCode Generator
  4. //
  5. // Copyright (c) 2011 Amanuel Tewolde
  6. //
  7. // Licensed under the MIT license:
  8. // http://www.opensource.org/licenses/mit-license.php
  9. //
  10. //---------------------------------------------------------------------
  11. */
  12.  
  13. /* Kurzbeschreibung
  14. // Generates a QRCode of text provided.
  15. // First QRCode is rendered to a canvas.
  16. // The canvas is then turned to an image PNG
  17. // before being returned as an <img> tag.
  18. */
  19.  
  20. function showQRCode(text) {
  21.  
  22.   var dotsize = 3; // size of box drawn on canvas
  23.   var padding = 10; // (white area around your QRCode)
  24.   var black = "rgb(0, 0,0)";
  25.   var white = "rgb(255,255,255)";
  26.   var QRCodeVersion = 4;
  27.   // 1-40 Es gibt verschiedene Versionen an QR-Codes die unterschiedlich viel an Daten aufnehmen können;
  28.   // eine Übersicht ist hier zu sehen: http://goo.gl/S6RHA
  29.  
  30.   /* Begründung Version 4
  31.   // das Level 4 ist mindestends notwendig um folgendes darzustellen:
  32.   // pcn: P07062
  33.   // inv: 200700610
  34.   // snr: 648061
  35.   // mac:  
  36.   */
  37.  
  38.     var canvas=document.createElement('canvas');
  39.  
  40.     var qrCanvasContext = canvas.getContext('2d');
  41.   try {
  42.     /* Errorlevel-Beschreibung
  43.     // QR Code Error Correction Capability
  44.     // Higher levels improves error correction capability while decreasing the amount of data QR Code size.
  45.     // QRErrorCorrectLevel.L (5%) QRErrorCorrectLevel.M (15%) QRErrorCorrectLevel.Q (25%) QRErrorCorrectLevel.H (30%)
  46.     // eg. L can survive approx 5% damage...etc.
  47.     */
  48.     var qr = new QRCode(QRCodeVersion, QRErrorCorrectLevel.M);
  49.     qr.addData(text);
  50.     qr.make();
  51.    }
  52.  
  53.   // Errors abfangen  
  54.   catch(err) {
  55.   var errorChild = document.createElement("p");
  56.   var errorMSG = document.createTextNode("Erstellung fehlgeschlagen. " + err);
  57.     errorChild.appendChild(errorMSG);
  58.     return errorChild;
  59.   }
  60.    
  61.   var qrsize = qr.getModuleCount();
  62.   canvas.setAttribute('height',(qrsize * dotsize) + padding);
  63.   canvas.setAttribute('width',(qrsize * dotsize) + padding);
  64.   var shiftForPadding = padding / 2;
  65.   if (canvas.getContext){
  66.     for (var r = 0; r < qrsize; r++) {
  67.       for (var c = 0; c < qrsize; c++) {
  68.       if (qr.isDark(r, c))
  69.       qrCanvasContext.fillStyle = black;
  70.       else
  71.       qrCanvasContext.fillStyle = white;
  72.       qrCanvasContext.fillRect ((c*dotsize) + shiftForPadding, (r*dotsize) + shiftForPadding, dotsize, dotsize); // x, y, w, h
  73.       }
  74.     }
  75.   }
  76.  
  77.   var imgElement = document.createElement("img");
  78.   imgElement.src = canvas.toDataURL("image/png");
  79.  
  80.   return imgElement;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement