2012-11-02 106 views
5

我有一个nodejs服务器,它通过websocket接收以base64编码的图像。我想对这些图像进行一些图像处理并将其发回。我在网上搜索了一下,找到了一些图书馆来帮助我做到这一点,但是我能找到的所有图书馆都是将图像存储在服务器端的某处,执行操作并保存图像。显然,它们都将输入一个包含图像文件名的字符串作为输入,所以我猜测它们通过文件流手动提取图像。使用base64图像数据在NodeJS中进行图像处理

我的问题是,是否有一个库可以帮助我直接在base64数据上工作(即将数据作为输入传递给函数),还是应该每次将图像保存在服务器上时修改并发送回来了?我宁愿不选择后者,因为我正在研究一些高性能的应用程序,而所有这些保存/加载看起来都浪费周期。否则,你是否看到了其他方式可以实现这一点(例如,获取图像文件而不保存并加载回来)?

谢谢。

回答

2

Buffer一起工作s。

var img = new Buffer(img_string, 'base64'); 
// Work with your images like other tutorials do. 
+0

我不确定这是否会工作,图书馆显然希望文件名作为他们的功能的输入,因此我猜他们正在打开一个文件流并将手动获取图像。无论如何,我会试试这个。谢谢! – Masiar

+0

@Masiar图书馆必须在幕后与Buffers合作。他们可能需要一个文件路径来打开文件作为一个缓冲区,但这一切都将缓冲到缓冲区:-) –

+0

我绝对同意:)!但API很清楚需要什么类型的输入。如果输入源可以是缓冲区,我将立即尝试。如果是这样的话,那么你就是我的一天。否则不错的尝试。我会尽快告诉你。 – Masiar

0

这一个可以与“可读流”工作:https://github.com/aheckmann/gm

查看所述第二组中的自述例子。

+0

看起来不错。问题是我无法从base64创建一个ReadableStream格式,我可以像@Florian那样在缓冲区中进行转换,但接受的唯一格式是ReadableStream。 – Masiar