UNPKG

1.86 kBJavaScriptView Raw
1
2const { svg2png } = require('../common/svg2png')
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 * @returns {ArrayBuffer} sign png
11 * @example
12 * // using promise.then
13 * swu.signPng('𝠃𝤟𝤩񋛩𝣵𝤐񀀒𝤇𝣤񆈥𝤐𝤆񀀚𝣮𝣭').then( png => {
14 * console.log(png)
15 * })
16 * @example
17 * // using async/await
18 * const png = await swu.signPng('𝠃𝤟𝤩񋛩𝣵𝤐񀀒𝤇𝣤񆈥𝤐𝤆񀀚𝣮𝣭')
19 */
20const signPng = async (swuSign) => {
21 let svg = await signSvg(swuSign);
22 svg = svg.replace(/<text.*text>/g, "");
23 const png = await svg2png(svg);
24 return png;
25}
26
27/**
28 * Function that creates a data url PNG image from an SWU sign with an optional style string
29 * @function swu.signPngDataUrl
30 * @param {string} swuSign - an SWU sign with optional style string
31 * @returns {string} sign png
32 * @example
33 * // using promise.then
34 * swu.signPngDataUrl('𝠃𝤟𝤩񋛩𝣵𝤐񀀒𝤇𝣤񆈥𝤐𝤆񀀚𝣮𝣭').then( png => {
35 * console.log(png)
36 * })
37 * @example
38 * // using async/await
39 * const png = await swu.signPngDataUrl('𝠃𝤟𝤩񋛩𝣵𝤐񀀒𝤇𝣤񆈥𝤐𝤆񀀚𝣮𝣭')
40 */
41const signPngDataUrl = async (swuSign) => {
42 const res = await signPng(swuSign);
43 return 'data:image/png;base64,' + res.toString('base64');
44}
45
46if (require.main === module) {
47 if (process.argv[3]) {
48 signPng(process.argv[2]).then( res => {
49 fs.writeFileSync(process.argv[3], res);
50 })
51 } else {
52 signPngDataUrl(process.argv[2]).then( res => {
53 console.log(res)
54 })
55 }
56} else {
57 module.exports = { signPng, signPngDataUrl }
58}