Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Lizenz
- //---------------------------------------------------------------------
- // JavaScript-HTML5 QRCode Generator
- //
- // Copyright (c) 2011 Amanuel Tewolde
- //
- // Licensed under the MIT license:
- // http://www.opensource.org/licenses/mit-license.php
- //
- //---------------------------------------------------------------------
- */
- /* Kurzbeschreibung
- // Generates a QRCode of text provided.
- // First QRCode is rendered to a canvas.
- // The canvas is then turned to an image PNG
- // before being returned as an <img> tag.
- */
- function showQRCode(text) {
- var dotsize = 3; // size of box drawn on canvas
- var padding = 10; // (white area around your QRCode)
- var black = "rgb(0, 0,0)";
- var white = "rgb(255,255,255)";
- var QRCodeVersion = 4;
- // 1-40 Es gibt verschiedene Versionen an QR-Codes die unterschiedlich viel an Daten aufnehmen können;
- // eine Übersicht ist hier zu sehen: http://goo.gl/S6RHA
- /* Begründung Version 4
- // das Level 4 ist mindestends notwendig um folgendes darzustellen:
- // pcn: P07062
- // inv: 200700610
- // snr: 648061
- // mac:
- */
- var canvas=document.createElement('canvas');
- var qrCanvasContext = canvas.getContext('2d');
- try {
- /* Errorlevel-Beschreibung
- // QR Code Error Correction Capability
- // Higher levels improves error correction capability while decreasing the amount of data QR Code size.
- // QRErrorCorrectLevel.L (5%) QRErrorCorrectLevel.M (15%) QRErrorCorrectLevel.Q (25%) QRErrorCorrectLevel.H (30%)
- // eg. L can survive approx 5% damage...etc.
- */
- var qr = new QRCode(QRCodeVersion, QRErrorCorrectLevel.M);
- qr.addData(text);
- qr.make();
- }
- // Errors abfangen
- catch(err) {
- var errorChild = document.createElement("p");
- var errorMSG = document.createTextNode("Erstellung fehlgeschlagen. " + err);
- errorChild.appendChild(errorMSG);
- return errorChild;
- }
- var qrsize = qr.getModuleCount();
- canvas.setAttribute('height',(qrsize * dotsize) + padding);
- canvas.setAttribute('width',(qrsize * dotsize) + padding);
- var shiftForPadding = padding / 2;
- if (canvas.getContext){
- for (var r = 0; r < qrsize; r++) {
- for (var c = 0; c < qrsize; c++) {
- if (qr.isDark(r, c))
- qrCanvasContext.fillStyle = black;
- else
- qrCanvasContext.fillStyle = white;
- qrCanvasContext.fillRect ((c*dotsize) + shiftForPadding, (r*dotsize) + shiftForPadding, dotsize, dotsize); // x, y, w, h
- }
- }
- }
- var imgElement = document.createElement("img");
- imgElement.src = canvas.toDataURL("image/png");
- return imgElement;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement