use*_*931 2 base64 encode node.js
我想从url获取图像并通过nodejs对base64进行编码,然后通过base64编码显示该图像,但此代码不正确.此代码保存不正确的png文件.
var http = require('http')
, fs = require('fs')
, options
options = {
host: 'google.com'
, port: 80
, path: '/images/srpr/logo3w.png'
}
function base64_encode(bitmap) {
return new Buffer(bitmap).toString('base64');
}
function ImageReady(res2){
var request = http.get(options, function(res){
var imagedata = '';
res.setEncoding('binary');
res.on('data', function(chunk){
imagedata += chunk;
})
res.on('end', function(){
var base64encode = base64_encode(imagedata);
res2.end('<img src="data:image/png;base64,'+base64encode+'" />');
fs.writeFile('logo.png', imagedata, 'binary', function(err){
if (err) throw err
console.log('File saved.')
})
})
})
}
var httpListen = require('http');
httpListen.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
ImageReady(res);
}).listen(8080);
console.log('Server running!');
Run Code Online (Sandbox Code Playgroud)
Dmi*_*try 11
试试这个:
var loadBase64Image = function (url, callback) {
// Required 'request' module
var request = require('request');
// Make request to our image url
request({url: url, encoding: null}, function (err, res, body) {
if (!err && res.statusCode == 200) {
// So as encoding set to null then request body became Buffer object
var base64prefix = 'data:' + res.headers['content-type'] + ';base64,'
, image = body.toString('base64');
if (typeof callback == 'function') {
callback(image, base64prefix);
}
} else {
throw new Error('Can not download image');
}
});
};
Run Code Online (Sandbox Code Playgroud)
在node.js应用程序中的某处使用:
// ...
loadBase64Image('http://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Carcharhinus_falciformis_off_Cuba.jpg/180px-Carcharhinus_falciformis_off_Cuba.jpg', function (image, prefix) {
res.send('<img src="' + prefix + image + '"') />;
});
// ...
Run Code Online (Sandbox Code Playgroud)