UNPKG

lean-qr

Version:
2 lines (1 loc) 1.07 kB
import{deflateSync as e}from"node:zlib";const f=Buffer.from([137,80,78,71,13,10,26,10]),r=Buffer.from([]),t=(t,{on:o=[0,0,0],off:a=[0,0,0,0],pad:l=4,padX:u=l,padY:s=l,scale:p=1}={})=>{const B=(t.size+2*u)*p,c=(t.size+2*s)*p,d=B+15>>3,i=Buffer.alloc(c*d);for(let e=0;e<c;++e)for(let f=0;f<B;++f)t.get((f/p|0)-u,(e/p|0)-s)&&(i[e*d+1+(f>>3)]|=128>>(7&f));const b=a[3]??255,m=o[3]??255,g=(b&m)<255,v=a[0]|a[1]|a[2]|(o[0]&o[1]&o[2])<255|g,w=Buffer.alloc(13);return w.writeInt32BE(B,0),w.writeInt32BE(c,4),w[8]=1,w[9]=v?3:0,Buffer.concat([f,n(1229472850,w),v?n(1347179589,[a[0],a[1],a[2],o[0],o[1],o[2]]):r,g?n(1951551059,[b,m]):r,n(1229209940,e(i,{level:9})),n(1229278788,[])])},o=(e,f)=>"data:image/png;base64,"+t(e,f).toString("base64"),n=(e,f)=>{const r=f.length,t=Buffer.alloc(12+r);return t.writeInt32BE(r,0),t.writeInt32BE(e,4),t.set(f,8),t.writeInt32BE(~t.subarray(4,8+r).reduce((e,f)=>a[255&(e^f)]^e>>>8,-1),8+r),t},a=new Uint32Array(256);for(let e=0;e<256;++e){let f=e;for(let e=0;e<8;++e)f=3988292384*(1&f)^f>>>1;a[e]=f}export{t as toPngBuffer,o as toPngDataURL};