zpl-image-modern
Version:
Modern ZPL image conversion library supporting both browser and Node.js environments
3 lines (2 loc) • 5.4 kB
JavaScript
import t from"pako";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 h=r/100*255;let i,a,l,c;if(o)i=0,l=0,a=e-1,c=n-1;else{a=0,c=0,i=e,l=n;for(let r=0;r<n;r++)for(let n=0;n<e;n++){const o=4*(r*e+n),g=t[o+3]/255;.3*t[o]*g+255*(1-g)+(.59*t[o+1]*g+255*(1-g))+(.11*t[o+2]*g+255*(1-g))<=h&&(i>n&&(i=n),l>r&&(l=r),a<n&&(a=n),c<r&&(c=r))}i>a&&(i=0,a=e-1,l=0,c=n-1)}const g=a-i+1,f=c-l+1,d=new Uint8Array(g*f);let s=0;for(let n=l;n<=c;n++)for(let r=i;r<=a;r++){const o=4*(n*e+r),i=t[o+3]/255,a=.3*t[o]*i+255*(1-i)+(.59*t[o+1]*i+255*(1-i))+(.11*t[o+2]*i+255*(1-i));d[s++]=a<=h?1:0}return d.width=g,d.height=f,d}(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 h=0;h<e;h++){let i=0,a=0;for(let l=n-1;l>=0;l--)i|=t[l*e+h]<<7-a++%8,0!==l&&a%8!=0||(r[o++]=i,i=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 h=e-1;h>=0;h--){let i=0,a=0;for(let l=0;l<n;l++)i|=t[l*e+h]<<7-a++%8,l!==n-1&&a%8!=0||(r[o++]=i,i=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 h=n-1;h>=0;h--){let n=0,i=0;for(let a=e-1;a>=0;a--)n|=t[h*e+a]<<7-i++%8,0!==a&&i%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,h=0,i=0;for(const n of t)h|=n<<7-i++%8,i!==e&&i%8!=0||(r[o++]=h,h=0,i===e&&(i=0));return r.width=e,r.height=n,r}(r)}}function rgbaToACS(t,n,r={}){const h=o(t,n,r),i=h.width,a=h.height,l=Math.ceil(i/8);let c="";for(const t of h)c+=e[t];let g="";const f=/([0-9a-fA-F])\1{2,}/g;let d,s=0;for(;null!==(d=f.exec(c));){g+=c.substring(s,d.index);let t=d[0].length;const e=d[1];for(;t>0;)t>=400?(g+="z",t-=400):t>=20?(g+="_ghijklmnopqrstuvwxy"[Math.floor(t/20)],t%=20):t>0&&(g+="_GHIJKLMNOPQRSTUVWXY"[t],t=0);g+=e,s=f.lastIndex}return g+=c.substring(s),{length:h.length,rowlen:l,width:i,height:a,acs:g}}const h={deflate:e=>t.deflate(e),toBase64:t=>function(t){let e="",n=0;for(let r=4294967280&t.length;n<r;n+=16)e+=String.fromCharCode(t[n],t[n+1],t[n+2],t[n+3],t[n+4],t[n+5],t[n+6],t[n+7],t[n+8],t[n+9],t[n+10],t[n+11],t[n+12],t[n+13],t[n+14],t[n+15]);for(;n<t.length;)e+=String.fromCharCode(t[n++]);return btoa(e)}(t)};function imageToZ64(t,e={}){const n=document.createElement("canvas"),r=n.getContext("2d");if(!r)throw new Error("Could not get 2D context from canvas");n.width=t.naturalWidth||t.width,n.height=t.naturalHeight||t.height,r.imageSmoothingQuality="high",r.drawImage(t,0,0,n.width,n.height);const o=r.getImageData(0,0,n.width,n.height);return rgbaToZ64(o.data,o.width,e)}function imageToACS(t,e={}){const n=document.createElement("canvas"),r=n.getContext("2d");if(!r)throw new Error("Could not get 2D context from canvas");n.width=t.naturalWidth||t.width,n.height=t.naturalHeight||t.height,r.imageSmoothingQuality="high",r.drawImage(t,0,0,n.width,n.height);const o=r.getImageData(0,0,n.width,n.height);return rgbaToACS(o.data,o.width,e)}function rgbaToZ64(t,e,n={}){return function(t,e,n,h={}){const i=o(t,e,h),a=i.width,l=i.height,c=Math.ceil(a/8),g=n.deflate(i),f=n.toBase64(g);return{length:i.length,rowlen:c,width:a,height:l,z64:":Z64:"+f+":"+r(f)}}(t,e,h,n)}export{imageToACS,imageToZ64,rgbaToACS,rgbaToZ64};
//# sourceMappingURL=index.esm.js.map