Image for Node.js
This is a part of Node3D project.
npm i image-raub
Synopsis
Node.js N-API addon implementing the HTMLImageElement.
Note: this addon uses N-API, and therefore is ABI-compatible across different Node.js versions. Addon binaries are precompiled and there is no compilation step during the
npm icommand.
The src property can be:
- A local file.
- A data URI.
- A http(s) URL.
FreeImage is used as backend decoder.
Additional features include:
- Save the image to disk.
- Create an Image from raw RGBA pixel data.
- Some context 2d functionality, e.g.
drawImage.
Usage
Load an OpenGL texture
const Image = require('image-raub');
const image = new Image();
// Web-style onload
image.onload = () => {
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST);
gl.generateMipmap(gl.TEXTURE_2D);
gl.bindTexture(gl.TEXTURE_2D, null);
};
image.src = `${__dirname}/texture.jpg`;Here Image is used to load a texture. The constructed object receives src property,
then the file is read and 'load' event is emitted. After that, image.data is
available as a Buffer, containing the whole pixel data, and image.width/image.height
contain the dimensions.
Make an OpenGL snapshot
const memSize = screen.w * screen.h * 4; // estimated number of bytes
const storage = { data: Buffer.allocUnsafeSlow(memSize) };
gl.readPixels(
0, 0,
screen.w, screen.h,
gl.RGBA,
gl.UNSIGNED_BYTE,
storage
);
const img = Image.fromPixels(screen.w, screen.h, 32, storage.data);
img.save(`${Date.now()}.jpg`);Image can save its current content to the filesystem. It can also load from raw
pixel values using static fromPixels() method.
Properties
get/set number width/naturalWidth- image width.get/set number height/naturalHeight- image height.get/set [width, height] wh- image width and height.get/set {width, height} size- image width and height.get/set string src- image source file.get/set function onload- setter uses.on('load', ...)method, getter returns all listeners.get/set function onerror- setter uses.on('error', ...)method, getter returns all listeners.get boolean complete- if image has already been loaded.
Methods:
save(string dest)- save Image to file. Resize tow, his optional.drawImage(src, ...)- refer to drawImage, but optional paramsdx, dyare ignored.load(Buffer data)- load from a file in memory.static fromPixels(uint width, uint height, uint bpp, Buffer pixels)- create image from raw pixels. For example it helps when you want to store the result ofglReadPixels()as an image.
Events:
'load'- the requested (src) file was loaded.'error'- an error has occured.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.

