Bitmap Image Library for Node.js
node-bitmap is a pure JavaScript library designed for low-level bitmap image manipulation within Node.js environments. Published over a decade ago as version 0.0.1, this package offers basic functionalities for creating and modifying uncompressed bitmap data, including setting and getting individual pixel values. It was developed to run on very old Node.js versions (>=v0.6.5) and has seen no updates or maintenance since its initial release. Consequently, it is considered abandoned and lacks compatibility with modern JavaScript features, Node.js versions, and security patches. Its primary differentiator was its 'pure JavaScript' implementation, avoiding native dependencies at a time when such libraries often required them, but this also means it is likely slower and less feature-rich than contemporary alternatives.
Common errors
-
Error: Cannot find module 'node-bitmap'
cause Attempting to use `import` syntax in an ES Module context or running in an environment where CommonJS `require` is not available, or the package simply isn't installed.fixEnsure the package is installed with `npm install node-bitmap` and use `const Bitmap = require('node-bitmap');` for importing. -
TypeError: require is not a function
cause This error occurs when trying to use `require` in a pure ES Module (ESM) environment (e.g., `"type": "module"` in package.json, or a `.mjs` file) where `require` is not globally available.fixEither convert your project or file to CommonJS (`.js` without `"type": "module"` or `.cjs` file extension) or use dynamic import with `const Bitmap = (await import('node-bitmap')).default;` if the package's exports allow it (unlikely for this specific package). -
node-bitmap@0.0.1 requires a peer of node@>=v0.6.5 but none was installed.
cause Modern Node.js versions do not satisfy the `engines` requirement of this ancient package, leading to peer dependency warnings or errors during installation or runtime incompatibility.fixThis package is incompatible with modern Node.js. If you absolutely must run it, you would need to use a Node.js version less than v1.0, which is highly discouraged. The real fix is to use a modern library.
Warnings
- breaking This package is severely outdated (v0.0.1, published over 12 years ago) and is not compatible with modern Node.js versions (e.g., >=12, >=14). It requires Node.js v0.6.5 or older.
- gotcha The README contains a significant typo for installation, instructing `npm install socket.io-store-memcached` instead of `npm install node-bitmap`.
- breaking The package uses CommonJS `require()` exclusively and does not support ES Modules (`import`). Attempting to `import` it will result in a runtime error.
- gotcha As an abandoned package, `node-bitmap` has not received any security updates in over a decade. It may contain known or unknown vulnerabilities, making it unsafe for production use, especially in applications handling untrusted input.
- breaking The API is likely unstable, incomplete, and undocumented. Given its 0.0.1 version, core functionalities like saving to common image formats might be missing or poorly implemented.
Install
-
npm install node-bitmap -
yarn add node-bitmap -
pnpm add node-bitmap
Imports
- Bitmap
import Bitmap from 'node-bitmap';
const Bitmap = require('node-bitmap'); - BitmapInstance
const bmp = require('node-bitmap')(width, height);const bmp = new Bitmap(width, height);
Quickstart
const Bitmap = require('node-bitmap');
// Create a new 100x50 pixel bitmap with a default background (often black)
const width = 100;
const height = 50;
const bmp = new Bitmap(width, height);
// Set a pixel at (10, 20) to red (RGBA)
bmp.setPixel(10, 20, 255, 0, 0, 255);
// Get the pixel data at (10, 20)
const pixel = bmp.getPixel(10, 20);
console.log(`Pixel at (10, 20): R=${pixel.r}, G=${pixel.g}, B=${pixel.b}, A=${pixel.a}`);
// Fill a small square with blue
for (let y = 5; y < 15; y++) {
for (let x = 5; x < 15; x++) {
bmp.setPixel(x, y, 0, 0, 255, 255);
}
}
// In a real application, you would then convert this bitmap to a buffer
// for saving to a file or sending over a network, e.g., bmp.toBuffer();
// (Note: The `toBuffer` method might not be directly available or might need
// specific arguments; this quickstart focuses on pixel manipulation.)
console.log(`Created a ${width}x${height} bitmap and manipulated pixels.`);
// Example of accessing raw buffer (highly dependent on implementation)
// console.log('Bitmap raw buffer size:', bmp.buffer.length);