This is a part of Node3D project.
npm i image-raub
Node.js N-API addon implementing the HTMLImageElement. It is useful for other Node.js addons that operate on decoded images.
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 i
command.
Load images from:
- Local file.
- Data URI.
- Http(s) URL.
- Raw RGBA pixel data
FreeImage is used as back-end.
Additional features:
save
- saves the image to a local file.drawImage
- is similar to drawImage.
const Image = require('image-raub');
See TypeSctipt defenitions for more details.
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.
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`;
Image can save its current content to the filesystem. It can also load from raw
pixel values using static fromPixels()
method.
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`);