在nodejs中将缓冲区转换为ReadableStream
我对Buffers和ReadableStreams相当陌生,所以也许这是一个愚蠢的问题。 我有一个库作为input一个ReadableStream,但我的input只是一个base64格式的图像。 我可以像这样在缓冲区中转换数据:
var img = new Buffer(img_string, 'base64');
但我不知道如何将其转换为ReadableStream或将获取的Buffer I转换为ReadableStream。
有没有办法做到这一点,或者我试图实现不可能的?
谢谢。
您可以使用Node Stream Buffers创build一个ReadableStream,如下所示:
// Initialize stream var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({ frequency: 10, // in milliseconds. chunkSize: 2048 // in bytes. }); // With a buffer myReadableStreamBuffer.put(aBuffer); // Or with a string myReadableStreamBuffer.put("A String", "utf8");
频率不能是0,所以这会引起一定的延迟。
节点stream缓冲器显然是devise用于testing; 无法避免延迟使其成为生产使用的不良select。
加布里埃尔·拉马斯在这个答案中build议streamifier : 如何包装一个缓冲区作为stream2可读stream?
像这样的东西…
import { Readable } from 'stream' const buffer = new Buffer(img_string, 'base64') const readable = new Readable() readable._read = function () {} // _read is required but you can noop it readable.push(buffer) readable.pipe(consumer) // consume the stream
在通用课程中,可读stream的_read
函数应该从底层源收集数据并逐渐push
,以确保在需要的时候不会从内存中获取大量的内存。
在这种情况下,尽pipe你已经在内存中的源代码,所以_read
不是必需的。
推入整个缓冲区只是将其包装在可读的streamapi中。
- Webshot到谷歌驱动器,而不使用缓冲区或stream存储中间文件?
- 如何在s3中使用节点js中的aws-sdk存储Excel文件?
- 缓冲区toString('utf8')从Firebird中select后返回
- 节点JS中的UInt16LE,UInt16BE等等是什么?
- process.stdinstream的可读和数据事件之间有什么区别?
- node.js USB(hid)条码扫描器读缓冲区
- 我怎样才能禁用nodejs ChildProcess.spawn标准输出缓冲区?
- 在插入rethinkdb之前,如何使用rediscachingtwitterstream?
- nodejs将原始图像数据写入jpeg文件?