node.js - harmony - node js news
Leyendo una imagen PNG en Node.js (4)
Éste realiza tanto la decodificación como la codificación PNG sin dependencias nativas:
pngjs - Codificador / decodificador PNG para Node.js sin dependencias nativas.
Un ejemplo para invertir los colores de un PNG:
var fs = require(''fs''),
PNG = require(''pngjs'').PNG;
fs.createReadStream(''in.png'')
.pipe(new PNG())
.on(''parsed'', function() {
for (var y = 0; y < this.height; y++) {
for (var x = 0; x < this.width; x++) {
var idx = (this.width * y + x) << 2;
// invert color
this.data[idx] = 255 - this.data[idx];
this.data[idx+1] = 255 - this.data[idx+1];
this.data[idx+2] = 255 - this.data[idx+2];
// and reduce opacity
this.data[idx+3] = this.data[idx+3] >> 1;
}
}
this.pack().pipe(fs.createWriteStream(''out.png''));
});
¿Hay una forma fácil en Node.js de leer un archivo PNG y obtener los píxeles de la imagen? Algo así como node-image , pero a la inversa :)
Revisé las bibliotecas enumeradas en https://github.com/joyent/node/wiki/modules#wiki-graphics , pero son simples envoltorios alrededor de las herramientas de línea de comandos que proporcionan recorte y cambio de tamaño o complejas herramientas de dibujo como node-canvas
.
Echa un vistazo a este guión de Pedro Teixeira:
Demuestra cómo leer un archivo .jpg. Simplemente reemplace Content-Type con ''image / png''.
Estaba a punto de enojarme, pero encontré uno:
png.js : un decodificador PNG en JS para el elemento de lienzo o Node.js.
var PNG = require(''png-js'');
var myimage = new PNG(''myimage.png'');
var width = myimage.width;
var height = myimage.height;
myimage.decode(function (pixels) {
//Pixels is a 1D array containing pixel data
});
Por favor, tenga en cuenta que es JavaScript puro . Funciona tanto en el navegador <canvas>
como en Node.JS.
Hay más propiedades aparte del width
y la height
, consulte esta fuente .
Yo creo que
var myimage = new PNG(''myimage.png'');
debiera ser
var myimage = new PNG.load(''myimage.png'');