pixel-buffer-diff
Advanced tools
+3
-2
@@ -7,8 +7,9 @@ export type Result = { | ||
| export type Options = { | ||
| threshold?: number; | ||
| threshold: number; | ||
| cumulatedThreshold?: number; | ||
| enableMinimap?: boolean; | ||
| mode?: string; | ||
| }; | ||
| export declare const diffImageDatas: (baseline: ImageData, candidate: ImageData, diff: ImageData, options: Options) => Result; | ||
| export declare const diff: (baseline8: Uint8Array | Uint8ClampedArray, candidate8: Uint8Array | Uint8ClampedArray, diff8: Uint8Array | Uint8ClampedArray, width: number, height: number, options: Options) => Result; | ||
| export declare const diff: (baseline8: Uint8Array | Uint8ClampedArray, candidate8: Uint8Array | Uint8ClampedArray, diff8: Uint8Array | Uint8ClampedArray, width: number, height: number, options?: Options) => Result; | ||
| //# sourceMappingURL=index.d.ts.map |
+252
-1
@@ -1,1 +0,252 @@ | ||
| Object.defineProperty(exports,"__esModule",{value:!0}),exports.diff=exports.diffImageDatas=void 0;exports.diffImageDatas=(t,e,a,i)=>{void 0===i.threshold&&(i.threshold=.03),void 0===i.cumulatedThreshold&&(i.cumulatedThreshold=.5),void 0===i.enableMinimap&&(i.enableMinimap=!1);const{width:n,height:h}=t,r=n*h,d=t.data,o=e.data,f=a.data,l=d.length,s=o.length,c=f.length;if(n!==e.width||h!==e.height||4*r!==l||l!==s)throw new Error("Different baseline and candidate ImageData dimensions");const m=a.width/n,u=c/l;if(a.height!==h||m!==u||1!==m&&3!==m)throw new Error("Invalid diff ImageData dimensions");const w=c===l?1:2,g=d.buffer,M=o.buffer,p=f.buffer,b=new Uint32Array(g,0,l>>2),x=new Uint32Array(M,0,l>>2),y=new Uint32Array(p,0,c>>2),D=i.threshold*i.threshold*35215;let A=0,U=0,v=0,I=0,T=0,E=0,_=0,j=0;const q=Math.ceil(Math.sqrt(r)/128),C=l/q&-4;for(let t=0;t<q;t++)j+=(.299*(d[A]+o[A])+.587*(d[A+1]+o[A+1])+.114*(d[A+2]+o[A+2]))/q/2,A+=C;const O=j<128,P=O?1057016832:1056964863,k=O?1056964863:1057016832;A=0;const z=Math.ceil(h/128),B=Math.ceil(n/128),F=new Uint8ClampedArray(B*z),G=2===w?n:0,H=2*G+n,J=Math.max(n,h),K=Math.max(B,z),L=new Uint32Array(J);let N=0;for(let t=0;t<K;t++)L.fill(t,N,Math.min(N+128,J)),N+=128;for(let t=0;t<h;t++){const e=L[t]*B;G>0&&(y.set(new Uint32Array(g,A,n),v),v+=n,y.set(new Uint32Array(M,A,n),v+n));let a=4034073399*(4034073399^t);for(let t=0;t<n;t++,v++,U++,A+=4,a++){if(b[U]===x[U])continue;const i=o[A]-d[A],n=o[A+1]-d[A+1],h=o[A+2]-d[A+2],r=.29889531*i+.58662247*n+.11448223*h,f=.59597799*i-.2741761*n-.32180189*h,l=.21147017*i-.52261711*n+.31114694*h;if(r*r*.5053+f*f*.299+l*l*.1957>D){F[e+L[t]]++,I++;const i=Math.abs(r);_+=i,y[v]=(r>0?P:k)+(Math.min(192,8*i)<<24),0===T&&(E=a),T+=a}}v+=G}if(T-=E,_/=256,i.enableMinimap)for(let t=0;t<B*z;t++){if(F[t]>0){const e=t/B|0,a=128*(t%B),i=Math.min(a+128,n),r=128*e,d=Math.min(r+128,h);v=a+r*H+G;const o=H-i+a;for(let t=r;t<d;t++){for(let t=a;t<i;t++)y[v++]|=545193984;v+=o}}}return _>i.cumulatedThreshold?{diff:I,cumulatedDiff:_,hash:T}:{diff:0,cumulatedDiff:0,hash:0}};exports.diff=(t,e,a,i,n,h)=>(0,exports.diffImageDatas)({width:i,height:n,data:t},{width:i,height:n,data:e},{width:i*a.length/t.length,height:n,data:a},h); | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.diff = exports.diffImageDatas = void 0; | ||
| const DiffOnly = 1; | ||
| const SideBySide = 2; | ||
| const MINIMAP_SCALE = 128; | ||
| const COLOR32_ADDED = 0x03f00cc00; | ||
| const COLOR32_REMOVED = 0x03f0000ff; | ||
| const COLOR32_MINIMAP = 0x0207f0000; | ||
| const HASH_SPREAD = 0x0f0731337; | ||
| const diffImageDatas = (baseline, candidate, diff, options) => { | ||
| const threshold = options.threshold ?? 0.03; | ||
| const cumulatedThreshold = options.cumulatedThreshold ?? 0.5; | ||
| const enableMinimap = options.enableMinimap ?? false; | ||
| const mode = options.mode ?? "basic"; | ||
| const { width, height } = baseline; | ||
| const area = width * height; | ||
| const baseline8 = baseline.data; | ||
| const candidate8 = candidate.data; | ||
| const diff8 = diff.data; | ||
| const b8l = baseline8.length; | ||
| const c8l = candidate8.length; | ||
| const d8l = diff8.length; | ||
| if (width !== candidate.width || height !== candidate.height || area * 4 !== b8l || b8l !== c8l) { | ||
| throw new Error("Different baseline and candidate ImageData dimensions"); | ||
| } | ||
| if (mode === "ssim" && (width | height) & 15) { | ||
| throw new Error("Invalid ImageData dimensions for ssim mode"); | ||
| } | ||
| const wRatio = diff.width / width; | ||
| const lRatio = d8l / b8l; | ||
| if (diff.height !== height || wRatio !== lRatio || (wRatio !== 1 && wRatio !== 3)) { | ||
| throw new Error("Invalid diff ImageData dimensions"); | ||
| } | ||
| const diffType = d8l === b8l ? DiffOnly : SideBySide; | ||
| const bBuffer = baseline8.buffer; | ||
| const cBuffer = candidate8.buffer; | ||
| const dBuffer = diff8.buffer; | ||
| const baseline32 = new Uint32Array(bBuffer, 0, b8l >> 2); | ||
| const candidate32 = new Uint32Array(cBuffer, 0, b8l >> 2); | ||
| const diff32 = new Uint32Array(dBuffer, 0, d8l >> 2); | ||
| const deltaThreshold = threshold * threshold * 35215; | ||
| let b8i = 0; | ||
| let b32i = 0; | ||
| let d32i = 0; | ||
| let diffCount = 0; | ||
| let hash = 0; | ||
| let hashStart = 0; | ||
| let cumulatedDiff = 0; | ||
| let averageBrightness = 0; | ||
| const brightnessSamples = Math.ceil(Math.sqrt(area) / 128); | ||
| const b8iStep = (b8l / brightnessSamples) & -4; | ||
| for (let i = 0; i < brightnessSamples; i++) { | ||
| averageBrightness += | ||
| (0.299 * (baseline8[b8i] + candidate8[b8i]) + | ||
| 0.587 * (baseline8[b8i + 1] + candidate8[b8i + 1]) + | ||
| 0.114 * (baseline8[b8i + 2] + candidate8[b8i + 2])) / | ||
| brightnessSamples / | ||
| 2; | ||
| b8i += b8iStep; | ||
| } | ||
| const isDarkTheme = averageBrightness < 128; | ||
| const color32Added = isDarkTheme ? COLOR32_ADDED : COLOR32_REMOVED; | ||
| const color32Removed = isDarkTheme ? COLOR32_REMOVED : COLOR32_ADDED; | ||
| const color32Minimap = enableMinimap ? COLOR32_MINIMAP : 0; | ||
| const d32iPadding = diffType === SideBySide ? width : 0; | ||
| const d32iWidth = d32iPadding * 2 + width; | ||
| if (mode === "ssim") { | ||
| const ssimPad = 64; | ||
| const ssimPad2 = ssimPad * ssimPad; | ||
| const ssimPad2_1 = ssimPad2 - 1; | ||
| if (diffType === SideBySide) { | ||
| for (let y = 0; y < height; y++) { | ||
| const index32 = y * width; | ||
| const diffIndex32 = index32 * 3; | ||
| const baseline32Span = new Uint32Array(baseline32.buffer, y * width * 4, width); | ||
| diff32.set(baseline32Span, diffIndex32); | ||
| const candidate32Span = new Uint32Array(candidate32.buffer, y * width * 4, width); | ||
| diff32.set(candidate32Span, diffIndex32 + width + width); | ||
| } | ||
| } | ||
| const patchOffsets8 = []; | ||
| const patchOffsets32 = []; | ||
| const patchOffsetsDiff32 = []; | ||
| const patchDiff = []; | ||
| ; | ||
| for (let y = 0; y < ssimPad; y++) { | ||
| for (let x = 0; x < ssimPad; x++) { | ||
| patchOffsetsDiff32.push(x + y * d32iWidth); | ||
| patchOffsets32.push(x + y * width); | ||
| patchOffsets8.push((x + y * width) * 4); | ||
| } | ||
| } | ||
| const K1 = 0.01; | ||
| const K2 = 0.03; | ||
| const C1 = (K1 * 255) ** 2; | ||
| const C2 = (K2 * 255) ** 2; | ||
| let lowestSsim = 1; | ||
| let diffCount = 0; | ||
| const threshold255 = threshold * 255; | ||
| for (let y = 0; y < height; y += ssimPad) { | ||
| for (let x = 0; x < width; x += ssimPad) { | ||
| const index32 = x + y * width; | ||
| let breakAndComputeSsim = false; | ||
| for (let i = 0; i < ssimPad2 && !breakAndComputeSsim; i++) { | ||
| const indexPlusOffset32 = index32 + patchOffsets32[i]; | ||
| breakAndComputeSsim = baseline32[indexPlusOffset32] != candidate32[indexPlusOffset32]; | ||
| } | ||
| if (breakAndComputeSsim) { | ||
| const index8 = index32 * 4; | ||
| let sumB = 0; | ||
| let sumC = 0; | ||
| let sumBB = 0; | ||
| let sumCC = 0; | ||
| let sumBC = 0; | ||
| for (let i = 0; i < ssimPad2; i++) { | ||
| const indexPlusOffset8 = index8 + patchOffsets8[i]; | ||
| const b = baseline8[indexPlusOffset8] * 0.299 + baseline8[indexPlusOffset8 + 1] * 0.587 + baseline8[indexPlusOffset8 + 2] * 0.114; | ||
| const c = candidate8[indexPlusOffset8] * 0.299 + candidate8[indexPlusOffset8 + 1] * 0.587 + candidate8[indexPlusOffset8 + 2] * 0.114; | ||
| patchDiff[i] = c - b; | ||
| sumB += b; | ||
| sumC += c; | ||
| sumBB += b * b; | ||
| sumCC += c * c; | ||
| sumBC += b * c; | ||
| } | ||
| const meanB = sumB / ssimPad2; | ||
| const meanC = sumC / ssimPad2; | ||
| const varB = (sumBB - ssimPad2 * meanB * meanB) / ssimPad2_1; | ||
| const varC = (sumCC - ssimPad2 * meanC * meanC) / ssimPad2_1; | ||
| const covBC = (sumBC - ssimPad2 * meanB * meanC) / ssimPad2_1; | ||
| const numerator = (2 * meanB * meanC + C1) * (2 * covBC + C2); | ||
| const denominator = (meanB * meanB + meanC * meanC + C1) * (varB + varC + C2); | ||
| const ssim = numerator / denominator; | ||
| if (ssim < 1 - threshold) { | ||
| const diffIndex32 = x + y * d32iWidth + d32iPadding; | ||
| diffCount++; | ||
| for (let i = 0; i < ssimPad2; i++) { | ||
| const dy = patchDiff[i]; | ||
| const dyAbs = Math.abs(dy); | ||
| if (dyAbs > threshold255) { | ||
| diffCount++; | ||
| diff32[diffIndex32 + patchOffsetsDiff32[i]] = ((dy > 0 ? color32Added : color32Removed) + | ||
| (Math.min(192, dyAbs * 2) << 24)) | color32Minimap; | ||
| const hashIndex = (y ^ HASH_SPREAD) * HASH_SPREAD + (x ^ HASH_SPREAD) + i; | ||
| if (hash === 0) { | ||
| hashStart = hashIndex; | ||
| } | ||
| hash += hashIndex; | ||
| } | ||
| else { | ||
| diff32[diffIndex32 + patchOffsetsDiff32[i]] = color32Minimap; | ||
| } | ||
| } | ||
| if (ssim < lowestSsim) { | ||
| lowestSsim = ssim; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| if (lowestSsim < 1) { | ||
| hash -= hashStart; | ||
| return { diff: diffCount, cumulatedDiff: lowestSsim, hash }; | ||
| } | ||
| } | ||
| else { | ||
| b8i = 0; | ||
| const miniHeight = Math.ceil(height / MINIMAP_SCALE); | ||
| const miniWidth = Math.ceil(width / MINIMAP_SCALE); | ||
| const miniMap = new Uint8ClampedArray(miniWidth * miniHeight); | ||
| const maxDimension = Math.max(width, height); | ||
| const maxMiniDimension = Math.max(miniWidth, miniHeight); | ||
| const axisMiniIndex = new Uint32Array(maxDimension); | ||
| let miniIndex = 0; | ||
| for (let i = 0; i < maxMiniDimension; i++) { | ||
| axisMiniIndex.fill(i, miniIndex, Math.min(miniIndex + MINIMAP_SCALE, maxDimension)); | ||
| miniIndex += MINIMAP_SCALE; | ||
| } | ||
| for (let y = 0; y < height; y++) { | ||
| const miniIndexY = axisMiniIndex[y] * miniWidth; | ||
| if (d32iPadding > 0) { | ||
| diff32.set(new Uint32Array(bBuffer, b8i, width), d32i); | ||
| d32i += width; | ||
| diff32.set(new Uint32Array(cBuffer, b8i, width), d32i + width); | ||
| } | ||
| let hashIndex = (y ^ HASH_SPREAD) * HASH_SPREAD; | ||
| for (let x = 0; x < width; x++, d32i++, b32i++, b8i += 4, hashIndex++) { | ||
| if (baseline32[b32i] === candidate32[b32i]) { | ||
| continue; | ||
| } | ||
| const dr = candidate8[b8i] - baseline8[b8i]; | ||
| const dg = candidate8[b8i + 1] - baseline8[b8i + 1]; | ||
| const db = candidate8[b8i + 2] - baseline8[b8i + 2]; | ||
| const dy = dr * 0.29889531 + dg * 0.58662247 + db * 0.11448223; | ||
| const di = dr * 0.59597799 - dg * 0.27417610 - db * 0.32180189; | ||
| const dq = dr * 0.21147017 - dg * 0.52261711 + db * 0.31114694; | ||
| const delta = dy * dy * 0.5053 + di * di * 0.299 + dq * dq * 0.1957; | ||
| if (delta > deltaThreshold) { | ||
| const miniIndex = miniIndexY + axisMiniIndex[x]; | ||
| miniMap[miniIndex]++; | ||
| diffCount++; | ||
| const dyAbs = Math.abs(dy); | ||
| cumulatedDiff += dyAbs; | ||
| diff32[d32i] = | ||
| (dy > 0 ? color32Added : color32Removed) + | ||
| (Math.min(192, dyAbs * 8) << 24); | ||
| if (hash === 0) { | ||
| hashStart = hashIndex; | ||
| } | ||
| hash += hashIndex; | ||
| } | ||
| } | ||
| d32i += d32iPadding; | ||
| } | ||
| hash -= hashStart; | ||
| cumulatedDiff /= 256; | ||
| if (enableMinimap) { | ||
| for (let i = 0; i < miniWidth * miniHeight; i++) { | ||
| const value = miniMap[i]; | ||
| if (value > 0) { | ||
| const miniX = i % miniWidth; | ||
| const miniY = i / miniWidth | 0; | ||
| const x0 = miniX * MINIMAP_SCALE; | ||
| const x1 = Math.min(x0 + MINIMAP_SCALE, width); | ||
| const y0 = miniY * MINIMAP_SCALE; | ||
| const y1 = Math.min(y0 + MINIMAP_SCALE, height); | ||
| d32i = x0 + y0 * d32iWidth + d32iPadding; | ||
| const d32iYinc = d32iWidth - x1 + x0; | ||
| for (let y = y0; y < y1; y++) { | ||
| for (let x = x0; x < x1; x++) { | ||
| diff32[d32i++] |= COLOR32_MINIMAP; | ||
| } | ||
| d32i += d32iYinc; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| if (cumulatedDiff > cumulatedThreshold) { | ||
| return { diff: diffCount, cumulatedDiff, hash }; | ||
| } | ||
| } | ||
| return { diff: 0, cumulatedDiff: 0, hash: 0 }; | ||
| }; | ||
| exports.diffImageDatas = diffImageDatas; | ||
| const diff = (baseline8, candidate8, diff8, width, height, options = { | ||
| threshold: 0.03, | ||
| cumulatedThreshold: 0.5, | ||
| enableMinimap: false, | ||
| mode: "basic" | ||
| }) => (0, exports.diffImageDatas)({ width, height, data: baseline8 }, { width, height, data: candidate8 }, { width: width * diff8.length / baseline8.length, height, data: diff8 }, options); | ||
| exports.diff = diff; |
+2
-2
@@ -23,5 +23,5 @@ { | ||
| ], | ||
| "version": "1.3.3", | ||
| "version": "1.4.0", | ||
| "scripts": { | ||
| "build": "tsc && terser ./dist/index.js -c -m --module -o ./dist/index.js" | ||
| "build": "tsc && echo 'terser ./dist/index.js -c -m --module -o ./dist/index.js'" | ||
| }, | ||
@@ -28,0 +28,0 @@ "main": "dist/index.js", |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
24047
13.07%265
2108.33%0
-100%5
-16.67%1
Infinity%