123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- var Utils = require('./utils')
- function clearCanvas (ctx, canvas, size) {
- ctx.clearRect(0, 0, canvas.width, canvas.height)
- if (!canvas.style) canvas.style = {}
- canvas.height = size
- canvas.width = size
- canvas.style.height = size + 'px'
- canvas.style.width = size + 'px'
- }
- function getCanvasElement () {
- try {
- return document.createElement('canvas')
- } catch (e) {
- throw new Error('You need to specify a canvas element')
- }
- }
- exports.render = function render (qrData, canvas, options) {
- var opts = options
- var canvasEl = canvas
- if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {
- opts = canvas
- canvas = undefined
- }
- if (!canvas) {
- canvasEl = getCanvasElement()
- }
- opts = Utils.getOptions(opts)
- var size = Utils.getImageWidth(qrData.modules.size, opts)
- var ctx = canvasEl.getContext('2d')
- var image = ctx.createImageData(size, size)
- Utils.qrToImageData(image.data, qrData, opts)
- clearCanvas(ctx, canvasEl, size)
- ctx.putImageData(image, 0, 0)
- return canvasEl
- }
- exports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {
- var opts = options
- if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {
- opts = canvas
- canvas = undefined
- }
- if (!opts) opts = {}
- var canvasEl = exports.render(qrData, canvas, opts)
- var type = opts.type || 'image/png'
- var rendererOpts = opts.rendererOpts || {}
- return canvasEl.toDataURL(type, rendererOpts.quality)
- }
|