archieve-projects/微信机器人/node_modules/@jimp/utils
Li Wei 6d6bcf309d backup: 2025-02-24 2025-02-24 15:22:12 +08:00
..
dist backup: 2025-02-24 2025-02-24 15:22:12 +08:00
src backup: 2025-02-24 2025-02-24 15:22:12 +08:00
CHANGELOG.md backup: 2025-02-24 2025-02-24 15:22:12 +08:00
LICENSE backup: 2025-02-24 2025-02-24 15:22:12 +08:00
README.md backup: 2025-02-24 2025-02-24 15:22:12 +08:00
index.d.ts backup: 2025-02-24 2025-02-24 15:22:12 +08:00
package.json backup: 2025-02-24 2025-02-24 15:22:12 +08:00

README.md

@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
)) {
}