轉自:https://blog.csdn.net/u010081689/article/details/51088068 node使用buffer生成圖片
轉自:https://blog.csdn.net/albg_boy/article/details/79287624 img顯示base64圖片
node使用buffer生成圖片
buffer是node里的一個模塊,這個模塊的出現是因為js沒有閱讀和操作二進制數據流而出現的
1、buffer是什么及作用?
Buffer顧名思義叫緩沖區,用於存儲速度不同步的設備或優先級不同的設備之間傳輸數據;通過buffer可以減少進程間通信需要等待的時間,當存儲速度快的設備與存儲速度慢的設備進行通信時,存儲慢的數據先把數據存放到buffer,達到一定程度存儲快的設備再讀取buffer的數據,在此期間存儲快的設備CPU可以干其他的事情。buffer一般是用在寫入磁盤的,例如:某個進程要求多個字段被讀入,當所有要求的字段被讀入之前已經讀入的字段會先放到buffer中。
2、node之buffer介紹
具體關於buffer的介紹,看《buffer詳解》
3、使用buffer來生產圖片示例
代碼:
var fs = require('fs');
fs.readFile('./public/images/avatar.jpg', function(err, originBuffer) {
console.log(Buffer.isBuffer(originBuffer));
// 生成圖片2(把buffer寫入到圖片文件)
fs.writeFile('./public/images/avatar2.jpg', originBuffer, function(err) {
if(err) {console.log(err)}
});
var base64Img = originBuffer.toString('base64'); // base64圖片編碼字符串
console.log(base64Img);
var decodeImg = new Buffer(base64Img, 'base64'); // new Buffer(string, encoding)
console.log(Buffer.compare(originBuffer, decodeImg)); // 0 表示一樣
// 生成圖片3(把base64位圖片編碼寫入到圖片文件)
fs.writeFile('./public/images/avatar3.jpg', decodeImg, function(err) {
if(err) {console.log(err)}
});
});
img顯示base64圖片
<img alt="Red Star" src="data:image/png;base64,[填入獲取的base64字符]">