web-dev-qa-db-ja.com

nodejs-jpgイメージの読み取りおよび出力方法

私はjpeg画像を読み込んで表示する方法の例を見つけようとしています。

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/');

次のコードを試してみましたが、エンコーディングをバッファとして設定する必要があると思います。 console.logを使用して、データの「オブジェクト」を出力します。

36
mesh

ファイルの内容全体を読み取る方法を次に示します。正常に完了した場合は、すべてのリクエストに応じてJPGイメージを表示するWebサーバーを起動します。

var http = require('http')
  , 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/');
});

サーバーは「readFile」コールバック関数によって起動され、応答ヘッダーにはContent-Type: image/jpegがあることに注意してください。

[編集]<img>dataを使用して、HTMLページに画像を直接埋め込むこともできます。 URIソース 。例えば:

  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>');
65
maerics

留意すべき2つの点Content-TypeEncoding

1)ファイルがcssの場合

if (/.(css)$/.test(path)) {
  res.writeHead(200, {'Content-Type': 'text/css'}); 
  res.write(data, 'utf8');
} 

2)ファイルがjpg/pngの場合

if (/.(jpg)$/.test(path)) {
  res.writeHead(200, {'Content-Type': 'image/jpg'});
  res.end(data,'Base64');
}

上記は、正確なコードパターンではなく、答えを説明するための単なるサンプルコードです。

0
user2248133