diff --git a/src/png2icojs.js b/src/png2icojs.js index e7eaa84..89480c7 100644 --- a/src/png2icojs.js +++ b/src/png2icojs.js @@ -17,7 +17,7 @@ export class PngIcoConverter { } // File Format: https://en.wikipedia.org/wiki/ICO_(file_format) // File Header + Image Header + Image Content - const headersLen = FileHeaderSize + ImageHeaderSize * 16; + const headersLen = FileHeaderSize + ImageHeaderSize * inLen; const totalLen = headersLen + this.sumInputLen(inputs); const arr = new Uint8Array(totalLen); // File Header diff --git a/src/png2icojs.js.map b/src/png2icojs.js.map index c2f469d..7382af1 100644 --- a/src/png2icojs.js.map +++ b/src/png2icojs.js.map @@ -1 +1 @@ -{"version":3,"file":"png2icojs.js","sourceRoot":"","sources":["png2icojs.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"png2icojs.js","sourceRoot":"","sources":["png2icojs.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/png2icojs.min.js b/src/png2icojs.min.js index ca1d969..17b3d5e 100644 --- a/src/png2icojs.min.js +++ b/src/png2icojs.min.js @@ -1 +1 @@ -const MaxSize=256,MaxFiles=65536,FileHeaderSize=6,ImageHeaderSize=16,IcoMime="image/x-icon";export class PngIcoConverter{async convertToBlobAsync(e,t=IcoMime){const n=await this.convertAsync(e);return new Blob([n],{type:t})}async convertAsync(e){const t=e.length;if(t>MaxFiles)throw new Error("TOO_MANY_FILES");const n=FileHeaderSize+16*ImageHeaderSize,r=n+this.sumInputLen(e),o=new Uint8Array(r);o.set([0,0,1,0,...this.to2Bytes(t)],0);let i=n;for(let t=0;tMaxSize||l>MaxSize))throw new Error("INVALID_SIZE");o.set([c>MaxSize?0:c,l>MaxSize?0:l,0,0,0,0,...r.bpp?this.to2Bytes(r.bpp):[0,0],...this.to4Bytes(s.size),...this.to4Bytes(i)],n);const g=r.png instanceof ArrayBuffer?r.png:await r.png.arrayBuffer();o.set(new Uint8Array(g),i),i+=s.size}return o}loadImageAsync(e){return new Promise((t,n)=>{const r=new Image;r.onload=(()=>t(r)),r.onerror=(()=>n("INVALID_IMAGE")),r.src=URL.createObjectURL(e)})}toBlob(e,t="image/png"){return e instanceof Blob?e:new Blob([e],{type:t})}to2Bytes(e){return[255&e,e>>8&255]}to4Bytes(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}sumInputLen(e){let t=0;for(const n of e){const e=n.png;e instanceof Blob?t+=e.size:t+=e.byteLength}return t}} \ No newline at end of file +const MaxSize=256,MaxFiles=65536,FileHeaderSize=6,ImageHeaderSize=16,IcoMime="image/x-icon";export class PngIcoConverter{async convertToBlobAsync(e,t=IcoMime){const n=await this.convertAsync(e);return new Blob([n],{type:t})}async convertAsync(e){const t=e.length;if(t>MaxFiles)throw new Error("TOO_MANY_FILES");const n=FileHeaderSize+ImageHeaderSize*t,r=n+this.sumInputLen(e),o=new Uint8Array(r);o.set([0,0,1,0,...this.to2Bytes(t)],0);let i=n;for(let t=0;tMaxSize||l>MaxSize))throw new Error("INVALID_SIZE");o.set([c>MaxSize?0:c,l>MaxSize?0:l,0,0,0,0,...r.bpp?this.to2Bytes(r.bpp):[0,0],...this.to4Bytes(s.size),...this.to4Bytes(i)],n);const g=r.png instanceof ArrayBuffer?r.png:await r.png.arrayBuffer();o.set(new Uint8Array(g),i),i+=s.size}return o}loadImageAsync(e){return new Promise((t,n)=>{const r=new Image;r.onload=(()=>t(r)),r.onerror=(()=>n("INVALID_IMAGE")),r.src=URL.createObjectURL(e)})}toBlob(e,t="image/png"){return e instanceof Blob?e:new Blob([e],{type:t})}to2Bytes(e){return[255&e,e>>8&255]}to4Bytes(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}sumInputLen(e){let t=0;for(const n of e){const e=n.png;e instanceof Blob?t+=e.size:t+=e.byteLength}return t}} \ No newline at end of file diff --git a/src/png2icojs.ts b/src/png2icojs.ts index 72cc9e3..364f8d4 100644 --- a/src/png2icojs.ts +++ b/src/png2icojs.ts @@ -26,7 +26,7 @@ export class PngIcoConverter { // File Format: https://en.wikipedia.org/wiki/ICO_(file_format) // File Header + Image Header + Image Content - const headersLen = FileHeaderSize + ImageHeaderSize * 16; + const headersLen = FileHeaderSize + ImageHeaderSize * inLen; const totalLen = headersLen + this.sumInputLen(inputs); const arr = new Uint8Array(totalLen);