@blazediff/core
High-performance pixel-by-pixel image comparison with block-based optimization. 20% faster than pixelmatch with zero memory allocation.
Installation
npm install @blazediff/core
API
blazediff(image1, image2, output, width, height, options)
Compare two images and return the number of different pixels.
Parameter | Type | Description |
---|---|---|
image1 |
Uint8Array | Uint8ClampedArray | First image data |
image2 |
Uint8Array | Uint8ClampedArray | Second image data |
output |
Uint8Array | Uint8ClampedArray | Optional output buffer for diff visualization |
width |
number | Image width in pixels |
height |
number | Image height in pixels |
options |
object | Comparison options (optional) |
Returns: Number of different pixels
Option | Type | Default | Description | Hint |
---|---|---|---|---|
threshold |
number | 0.1 | Color difference threshold (0-1) | Lower values = more sensitive. 0.05 for strict comparison, 0.2+ for loose comparison |
alpha |
number | 0.1 | Background image opacity | Controls how faded unchanged pixels appear in diff output |
aaColor |
[number, number, number] | [255,255,0] | Anti-aliasing pixel color | Yellow by default. Set to red [255,0,0] to highlight anti-aliasing |
diffColor |
[number, number, number] | [255,0,0] | Different pixel color | Red by default. Use contrasting colors for better visibility |
diffColorAlt |
[number, number, number] | - | Alternative color for dark differences | Helps distinguish light vs dark pixel changes |
includeAA |
boolean | false | Include anti-aliasing in diff count | Set true to count anti-aliasing pixels as actual differences |
diffMask |
boolean | false | Output only differences (transparent background) | Useful for creating overlay masks or highlighting changes only |
fastBufferCheck |
boolean | true | Use fast buffer check using Buffer.compare | Set to false if images are processed differently, but look similiar |
Usage
import blazediff from '@blazediff/core';
const diffCount = blazediff(
image1.data,
image2.data,
outputData,
width,
height,
{
threshold: 0.1,
alpha: 0.1,
aaColor: [255, 255, 0],
diffColor: [255, 0, 0],
includeAA: false,
diffMask: false,
fastBufferCheck: true,
}
);