zpl-image-modern
Version:
Modern ZPL image conversion library supporting both browser and Node.js environments
3 lines (2 loc) • 4.42 kB
JavaScript
import{deflateSync as t}from"zlib";const e=(()=>{const t=Array.from({length:256});for(let e=0;e<16;e++)t[e]="0"+e.toString(16);for(let e=16;e<256;e++)t[e]=e.toString(16);return t})(),n=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920];function r(t){let e=0;for(let r=0;r<t.length;r++){const o=t.charCodeAt(r);if(o>255)throw new RangeError("Invalid character in string for CRC16 calculation.");e=n[255&(o^e>>8)]^e<<8}const r=(65535&e).toString(16).toLowerCase();return"0000".substring(r.length)+r}function o(t,e,n={}){if(!e||e<0)throw new Error("Invalid width");const r=function(t,e,n,r,o){const i=r/100*255;let h,l,c,f;if(o)h=0,c=0,l=e-1,f=n-1;else{l=0,f=0,h=e,c=n;for(let r=0;r<n;r++)for(let n=0;n<e;n++){const o=4*(r*e+n),s=t[o+3]/255;.3*t[o]*s+255*(1-s)+(.59*t[o+1]*s+255*(1-s))+(.11*t[o+2]*s+255*(1-s))<=i&&(h>n&&(h=n),c>r&&(c=r),l<n&&(l=n),f<r&&(f=r))}h>l&&(h=0,l=e-1,c=0,f=n-1)}const s=l-h+1,a=f-c+1,g=new Uint8Array(s*a);let u=0;for(let n=c;n<=f;n++)for(let r=h;r<=l;r++){const o=4*(n*e+r),h=t[o+3]/255,l=.3*t[o]*h+255*(1-h)+(.59*t[o+1]*h+255*(1-h))+(.11*t[o+2]*h+255*(1-h));g[u++]=l<=i?1:0}return g.width=s,g.height=a,g}(t,e,Math.floor(t.length/e/4),n.black??50,n.notrim);switch(n.rotate){case"R":return function(t){const{width:e,height:n}=t,r=new Uint8Array(Math.ceil(n/8)*e);let o=0;for(let i=0;i<e;i++){let h=0,l=0;for(let c=n-1;c>=0;c--)h|=t[c*e+i]<<7-l++%8,0!==c&&l%8!=0||(r[o++]=h,h=0)}return r.width=n,r.height=e,r}(r);case"B":case"L":return function(t){const{width:e,height:n}=t,r=new Uint8Array(Math.ceil(n/8)*e);let o=0;for(let i=e-1;i>=0;i--){let h=0,l=0;for(let c=0;c<n;c++)h|=t[c*e+i]<<7-l++%8,c!==n-1&&l%8!=0||(r[o++]=h,h=0)}return r.width=n,r.height=e,r}(r);case"I":return function(t){const{width:e,height:n}=t,r=new Uint8Array(Math.ceil(e/8)*n);let o=0;for(let i=n-1;i>=0;i--){let n=0,h=0;for(let l=e-1;l>=0;l--)n|=t[i*e+l]<<7-h++%8,0!==l&&h%8!=0||(r[o++]=n,n=0)}return r.width=e,r.height=n,r}(r);default:return function(t){const{width:e,height:n}=t,r=new Uint8Array(Math.ceil(e/8)*n);let o=0,i=0,h=0;for(const n of t)i|=n<<7-h++%8,h!==e&&h%8!=0||(r[o++]=i,i=0,h===e&&(h=0));return r.width=e,r.height=n,r}(r)}}function rgbaToACS(t,n,r={}){const i=o(t,n,r),h=i.width,l=i.height,c=Math.ceil(h/8);let f="";for(const t of i)f+=e[t];let s="";const a=/([0-9a-fA-F])\1{2,}/g;let g,u=0;for(;null!==(g=a.exec(f));){s+=f.substring(u,g.index);let t=g[0].length;const e=g[1];for(;t>0;)t>=400?(s+="z",t-=400):t>=20?(s+="_ghijklmnopqrstuvwxy"[Math.floor(t/20)],t%=20):t>0&&(s+="_GHIJKLMNOPQRSTUVWXY"[t],t=0);s+=e,u=a.lastIndex}return s+=f.substring(u),{length:i.length,rowlen:c,width:h,height:l,acs:s}}const i={deflate:e=>t(e),toBase64:t=>Buffer.from(t).toString("base64")};function rgbaToZ64(t,e,n={}){return function(t,e,n,i={}){const h=o(t,e,i),l=h.width,c=h.height,f=Math.ceil(l/8),s=n.deflate(h),a=n.toBase64(s);return{length:h.length,rowlen:f,width:l,height:c,z64:":Z64:"+a+":"+r(a)}}(t,e,i,n)}export{rgbaToACS,rgbaToZ64};
//# sourceMappingURL=node.esm.js.map