UNPKG

2.29 kBJavaScriptView Raw
1
2const svg2img = require('svg2img');
3const { signSvg } = require('./swu-sign-svg');
4const fs = require('fs');
5
6/**
7 * Function that creates a binary PNG image from an SWU sign with an optional style string
8 * @function swu.signPng
9 * @param {string} swuSign - an SWU sign with optional style string
10 * @param {function} callback - a callback function with error and result parameters
11 * @example
12 * const callback = (error, result) => {
13 * if (error) {
14 * console.log(error)
15 * } else {
16 * console.log(result + " is '<Buffer 89 50 4e 47...")
17 * }
18 * }
19 *
20 * swu.signPng('𝠃𝤟𝤩񋛩𝣵𝤐񀀒𝤇𝣤񆈥𝤐𝤆񀀚𝣮𝣭', callback )
21 */
22const signPng = (swuSign, callback) => {
23 signSvg(swuSign, (err, res) => {
24 if (err) {
25 callback(err, null);
26 } else {
27 res = res.replace(/<text.*text>/g, "");
28 svg2img(res, (error, buffer) => {
29 if (error) {
30 callback(error, null);
31 } else {
32 callback(error, buffer);
33 }
34 })
35 }
36 })
37}
38
39/**
40 * Function that creates a data url PNG image from an SWU sign with an optional style string
41 * @function swu.signPngDataUrl
42 * @param {string} swuSign - an SWU sign with optional style string
43 * @param {function} callback - a callback function with error and result parameters
44 * @example
45 * const callback = (error, result) => {
46 * if (error) {
47 * console.log(error)
48 * } else {
49 * console.log(result + " is 'data:image/png;base64,iVBORw...")
50 * }
51 * }
52 *
53 * swu.signPngDataUrl('𝠃𝤟𝤩񋛩𝣵𝤐񀀒𝤇𝣤񆈥𝤐𝤆񀀚𝣮𝣭', callback )
54 */
55const signPngDataUrl = (swuSign, callback) => {
56 signPng(swuSign, (err, res) => {
57 if (err) {
58 callback(err, null);
59 } else {
60 callback(err, 'data:image/png;base64,' + res.toString('base64'));
61 }
62 })
63}
64
65if (require.main === module) {
66 if (process.argv[3]) {
67 signPng(process.argv[2], (err, res) => {
68 if (err) {
69 console.log(err)
70 } else {
71 fs.writeFileSync(process.argv[3], res);
72 }
73 })
74 } else {
75 signPngDataUrl(process.argv[2], (err, res) => {
76 console.log(err || res)
77 })
78 }
79} else {
80 module.exports = { signPng, signPngDataUrl }
81}