@jimp-rn/utils

Utils for jimp extensions.

Usage no npm install needed!

<script type="module">
  import jimpRnUtils from 'https://cdn.skypack.dev/@jimp-rn/utils';
</script>

README

@jimp/utils

Utils for jimp extensions.

Available Methods

isNodePattern

Determines if function was passed an node callback.

if (isNodePattern(cb)) {
  cb.call(this, null, this);
}

throwError

Either throws the error or calls the callback with the error.

if (/* check for error */) {
  return throwError.call(this, 'someError', cb);
}

scan

Scans through a region of the bitmap, calling a function for each pixel.

function removeRed(image) {
  return scan(image, 0, 0, image.bitmap.width, image.bitmap.height, function(
    x,
    y,
    index
  ) {
    const red = this.bitmap.data[index + 0];
    const green = this.bitmap.data[index + 1];
    const blue = this.bitmap.data[index + 2];
    const alpha = this.bitmap.data[index + 3];

    this.bitmap.data[index + 0] = 0;
    this.bitmap.data[index + 1] = green;
    this.bitmap.data[index + 2] = blue;
    this.bitmap.data[index + 3] = alpha;
  });
}

scanIterator

It's possible to make an iterator scan with a for ... of, if you want to break the scan before it reaches the end, but note, that this iterator has a huge performance implication:

for (const { x, y, idx, image } of scanIterator(
  image,
  0,
  0,
  image.bitmap.width,
  image.bitmap.height
)) {
}