簡體   English   中英

NodeJS:將 pngjs 流轉換為 base64

[英]NodeJS: convert pngjs stream to base64

我有一個使用 node-png 創建的 PNG 對象,根據文檔,它是一個“可讀可寫流”。

我想將 PNG 對象轉換為 base64 並通過 socket.io 將其發送到客戶端,在那里我將把字符串放在圖像 src 中。

我嘗試了很多東西,但似乎將流轉換為字符串並非易事。

請注意,數據是在 Node 內部創建的,而不是從文件系統創建的。

我怎樣才能做到這一點?

這是我為未來的讀者所做的( 這也有幫助):

png.pack();
var chunks = [];
png.on('data', function (chunk) {
  chunks.push(chunk);
  console.log('chunk:', chunk.length);
});
png.on('end', function () {
  var result = Buffer.concat(chunks);
  console.log('final result:', result.length);
  io.sockets.emit('image', result.toString('base64'));
});

您不想將流轉換為字符串,而是將其轉換為可讀塊:

stream.on('readable', function() {
  var string = stream.read().toString('base64');

  // send through websocket  
});

您也可以對流中運行的完整數據執行此操作:

var data = '';

stream.on('readable', function() {
  data += stream.read().toString('base64');
});
stream.on('end', function() {
  console.log(data);
});

取決於客戶端是否需要完整的 png 圖片可用,或者是否可以擁有單個塊。

但是,如果您對實際示例(通過 HTML5 拖放上傳的圖像)感興趣,您可以查看messenger

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM