我有一個PNG對象,我使用node-png創建,根據文檔它是「readable and writable Stream」。nodejs:將pngjs流轉換爲base64
我想將PNG對象轉換爲base64,並通過socket.io將其發送到客戶端,我將字符串放在圖像src中。
我已經嘗試了很多東西,但它似乎並不是微不足道的將一個流轉換爲字符串。
我該如何做到這一點?
請注意,數據是在節點內而不是從文件系統創建的。
謝謝!
我有一個PNG對象,我使用node-png創建,根據文檔它是「readable and writable Stream」。nodejs:將pngjs流轉換爲base64
我想將PNG對象轉換爲base64,並通過socket.io將其發送到客戶端,我將字符串放在圖像src中。
我已經嘗試了很多東西,但它似乎並不是微不足道的將一個流轉換爲字符串。
我該如何做到這一點?
請注意,數據是在節點內而不是從文件系統創建的。
謝謝!
感謝您的幫助。在這裏我就是這樣做的未來的讀者(this helped too):
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。
值得一提的是,使用字符串連接而不是推塊的給你奇怪的結果,如果你/圖像處理W¯¯明確。感謝你! –