Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ JS调用例子:
import QR from 'qrcode-base64'

var imgData = QR.drawImg(this.data.codeText, {
typeNumber: 4,
version: 1,
errorCorrectLevel: 'M',
size: 500
})
Expand All @@ -30,10 +30,16 @@ JS调用例子:
JS调用例子:
```
const QR = require('../../utils/weapp-qrcode.js')
var imgData = QR.drawImg(this.data.codeText, {
typeNumber: 4,
var imgData = QR.drawImg(content, {
version: 1,
errorCorrectLevel: 'M',
size: 500
color: '#3d0d83', // 支持#000,#000000 或者 rgb(0,0,0)
background: '#fff', // 支持#000,#000000 或者 rgb(0,0,0)
padding: 10, // 设置padding 为二维码方格的个数
size: 200
})
this.setData({
srcBase64: imgData
})
// 返回输出base64编码imgData

Expand Down
10 changes: 6 additions & 4 deletions demo/weapp-demo/pages/index/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@ Page({
})
},
drawImg: function () {
console.log(this.data.codeText);
var imgData = QR.drawImg(this.data.codeText, {
typeNumber: 4,
var imgData = QR.drawImg(content, {
version: 1,
errorCorrectLevel: 'M',
size: 500
color: '#3d0d83',
background: '#fff',
padding: 10,
size: 200
})
this.setData({
qrcodeURL: imgData
Expand Down
58 changes: 45 additions & 13 deletions weapp-qrcode.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
*/
//---------------------------------------------------------------------

var globalConfig = {
colors: [],
backgrounds: []
}
/**
* qrcode
* @param typeNumber 1 to 40
Expand Down Expand Up @@ -1384,14 +1388,18 @@ var gifImage = function(width, height) {
// Global Color Map

// black
out.writeByte(0x00);
out.writeByte(0x00);
out.writeByte(0x00);
for(var i = 0; i < 3; i++) {
out.writeByte(globalConfig.colors[i] || 0x00);
}

// white
out.writeByte(0xff);
out.writeByte(0xff);
out.writeByte(0xff);
for(var i = 0; i < 3; i++) {
var color = globalConfig.backgrounds[i] === 0 ? 0 : (globalConfig.backgrounds[i] || 0xff)
out.writeByte(color);
}
// out.writeByte(0xff);
// out.writeByte(0xff);
// out.writeByte(0xff);

//---------------------------------
// Image Descriptor
Expand Down Expand Up @@ -1587,15 +1595,38 @@ var createImgTag = function(width, height, getPixel, alt) {
return img;
};

var color2hexs = function(colorString) {
var color = [], rgb = [], hex;
if (colorString.startsWith('#')) {
hex = colorString.replace(/#/,"");
if (hex.length == 3) { // 处理 "#abc" 成 "#aabbcc"
var tmp = [];
for (var i = 0; i < 3; i++) {
tmp.push(hex.charAt(i) + hex.charAt(i));
}
hex = tmp.join("");
}

for (var i = 0; i < 3; i++) {
color[i] = "0x" + hex.substr(i * 2, 2);
rgb.push(parseInt(Number(color[i])));
}
} else if (colorString.startsWith('rgb')) {
rgb = colorString.toString().match(/\d+/g);
}
return rgb;
}
//---------------------------------------------------------------------
// returns qrcode function.

var drawImg = function(text, options) {
options = options || {};
var typeNumber = options.typeNumber || 4;
var typeNumber = options.version || 4;
var errorCorrectLevel = options.errorCorrectLevel || 'M';
var size = options.size || 500;

globalConfig.colors = color2hexs(options.color || '#000')
globalConfig.backgrounds = color2hexs(options.background || '#fff')
var padding = options.padding || 0
var qr;

try {
Expand All @@ -1609,16 +1640,17 @@ var drawImg = function(text, options) {
return drawImg(text, {
size: size,
errorCorrectLevel: errorCorrectLevel,
typeNumber: typeNumber + 1
version: typeNumber + 1,
color: options.color,
background: options.background,
padding: options.padding
});
}
}

// calc cellsize and margin
var cellsize = parseInt(size / qr.getModuleCount());
var margin = parseInt((size - qr.getModuleCount() * cellsize) / 2);

return qr.createImgTag(cellsize, margin, size);
var cellsize = ((size) / (qr.getModuleCount() + 2 * padding));
return qr.createImgTag(cellsize, padding * cellsize, size);
};
module.exports = {
drawImg: drawImg
Expand Down