[英]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.