I've been trying to find an example of how to read a jpeg image and then show the image.
var http = require("http"), fs = require("fs");
http.createServer(function (req, res) {
res.writeHead(
200,
{ "Content-Type": "text/html" }
);
fs.readFile("image.jpg", function (err, data) {
if (err) throw err;
res.write(data);
});
res.end();
}).listen(8124, "127.0.0.1");
console.log("Server running at http://127.0.0.1:8124/");
Tried the following code but I think the encoding needs to be set as buffer. Using console.log it outputs 'Object' for the data.
Here is how you can read the entire file contents, and if done successfully, start a webserver which displays the JPG image in response to every request:
var http = require('http')
var fs = require('fs')
fs.readFile('image.jpg', function(err, data) {
if (err) throw err // Fail if the file can't be read.
http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'image/jpeg'})
res.end(data) // Send the file data to the browser.
}).listen(8124)
console.log('Server running at http://localhost:8124/')
})
Note that the server is launched by the "readFile" callback function and the response header has Content-Type: image/jpeg.
[Edit] You could even embed the image in an HTML page directly by using an <img> with a data URI source. For example:
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<html><body><img src="data:image/jpeg;base64,')
res.write(Buffer.from(data).toString('base64'));
res.end('"/></body></html>');