2012-03-02 34 views
28

Tôi đã cố gắng tìm một ví dụ về cách đọc hình ảnh jpeg và sau đó hiển thị hình ảnh.nodejs - Cách đọc và xuất hình ảnh jpg?

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

Đã thử mã sau nhưng tôi nghĩ mã hóa cần được đặt làm đối tượng đệm xuất hiện khi tôi console.log dữ liệu.

Trả lời

48

Sau đây là cách bạn có thể đọc toàn bộ nội dung tập tin, và nếu thực hiện thành công, bắt đầu một máy chủ web mà hiển thị các hình ảnh JPG để đáp ứng mọi yêu cầu:

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

Lưu ý rằng các máy chủ được đưa ra bởi " readFile "chức năng gọi lại và tiêu đề phản hồi có Content-Type: image/jpeg.

[Chỉnh sửa] Bạn thậm chí có thể nhúng trực tiếp hình ảnh vào trang HTML bằng cách sử dụng <img> với data URI source. Ví dụ:

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>'); 
+2

Có cách nào để làm điều đó vì vậy hãy nói rằng chúng tôi đọc dữ liệu jpeg và đặt thuộc tính src có thể thông qua mã hóa nó thành base64? – mesh

+2

Tuyệt vời! Chỉ cần giải pháp tôi cần. Cảm ơn ví dụ thứ hai. – mesh

+0

nếu chúng ta có nhiều hình ảnh thì sao? –

-1

Hai điều cần lưu ý Content-TypeEncoding

1.What nếu tập tin css

if (/.(css)$ /.test(path)) { res.writeHead (200, {'Loại nội dung': 'text/css'});

ghi đè (dữ liệu, 'utf8');

} 2 gì nếu tập tin jpg/png

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

res.end (dữ liệu, 'Base64'); }

Trên đây chỉ là một mã mẫu để giải thích câu trả lời chứ không phải mẫu mã chính xác.

Các vấn đề liên quan