tutorial node instalar ejemplos node.js encoding express base64

instalar - Node.js obtiene una imagen de la web y la codifica con base64



node js tutorial (4)

Estoy intentando buscar una imagen de la web y codificarla con base64.

lo que tengo hasta ahora es básicamente:

var request = require(''request''); var BufferList = require(''bufferlist'').BufferList; bl = new BufferList(), request({uri:''http://tinypng.org/images/example-shrunk-8cadd4c7.png'',responseBodyStream: bl}, function (error, response, body) { if (!error && response.statusCode == 200) { var type = response.headers["content-type"]; var prefix = "data:" + type + ";base64,"; var base64 = new Buffer(bl.toString(), ''binary'').toString(''base64''); var data = prefix + base64; console.log(data); } });

Esto parece estar muy cerca de la solución, pero no puedo hacer que funcione. Reconoce el tipo de datos y muestra el resultado:

data:image/png;base64

sin embargo, la lista de almacenamiento ''bl'' parece estar vacía.

¡Gracias por adelantado!


BufferList es obsoleto, ya que su funcionalidad ahora se encuentra en Node core. La única parte difícil aquí es configurar la solicitud para no usar ninguna codificación:

var request = require(''request'').defaults({ encoding: null }); request.get(''http://tinypng.org/images/example-shrunk-8cadd4c7.png'', function (error, response, body) { if (!error && response.statusCode == 200) { data = "data:" + response.headers["content-type"] + ";base64," + new Buffer(body).toString(''base64''); console.log(data); } });


Puede usar el módulo Node.js base base64-stream , que es un codificador / decodificador Base64 de transmisión. El beneficio de este método es que puede convertir la imagen sin tener que almacenar todo en la memoria y sin usar el módulo de solicitud.

var http = require(''http''); var base64encode = require(''base64-stream'').Encode; http.get(''http://tinypng.org/images/example-shrunk-8cadd4c7.png'', function(res) { if (res.statusCode === 200) res.pipe(base64encode()).pipe(process.stdout); });


Utilizo para cargar y codificar la imagen en el módulo base64 string node-base64-image npm.

Descargue y codifique una imagen:

var base64 = require(''node-base64-image''); var options = {string: true}; base64.base64encoder(''www.someurl.com/image.jpg'', options, function (err, image) { if (err) { console.log(err); } console.log(image); });

Codifica una imagen local:

var base64 = require(''node-base64-image''); var path = __dirname + ''/../test.jpg'', options = {localFile: true, string: true}; base64.base64encoder(path, options, function (err, image) { if (err) { console.log(err); } console.log(image); });


LO ÚLTIMO, A PARTIR DE 2017 FINALIZANDO

Bueno, después de leer las respuestas anteriores y un poco de investigación, llegué a conocer una nueva forma que no requiere ninguna instalación de paquete , ¡el módulo http (que está incorporado) es suficiente!

NOTA : Lo he usado en la versión de nodo 6.x, así que supongo que también es aplicable a las versiones anteriores.

var http = require(''http''); http.get(''http://tinypng.org/images/example-shrunk-8cadd4c7.png'', (resp) => { resp.setEncoding(''base64''); body = "data:" + resp.headers["content-type"] + ";base64,"; resp.on(''data'', (data) => { body += data}); resp.on(''end'', () => { console.log(body); //return res.json({result: body, status: ''success''}); }); }).on(''error'', (e) => { console.log(`Got error: ${e.message}`); });

¡Espero que ayude!

Además, ¡consulte más sobre http.get(...) here !