节点将块写入映像

我想将大块的图像数据转换为图像。 但是,我似乎无法成功。 这是我想要转换的块的types。

–ThisString内容types:image / jpeg内容长度:29016

#JFIF (#(#!# – +(0)!1AQa“q2 #B R $3br
%&'()* 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
w!1AQaq“2 B #3R br $4 % &'() 56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?A6 uM t ! # Q <| [\ U> ^ = M G-ƴ z & R8 پ S + i C l )6 ,@ *a J } JM=W N9 4 T 3 Rb #0E, w &L ne C dJWd : ( ˸| Z_8( G\c aB 7 MP q! , ? O3Nò H =E8 T u pdf H 3 jK ] W8 3QK v Q ֬ 8 x E pI N Y6ZE!j nI = H\c Z Ic.c AYKv :T:پTRŎy- ]Q ….

如何将这些数据保存到JPEG图像。

问题是在JavaScriptstring中编码和存储二进制数据。 在http://nodejs.org/api.html上的Buffers下有一个相当不错的章节&#x3002;

不幸的是,解决这个问题最简单的方法就是改变请求npm。 我不得不添加response.setEncoding('binary'); 在第66行就在var buffer;之下var buffer; 在/path/to/lib/node/.npm/request/active/package/lib/main.js中。 这对于这个请求可以正常工作,但是对其他人不会。 你可能想要破解它,所以这只是基于其他一些通过的选项设置。

然后我改变了

var buf = new Buffer(body)

var buf = new Buffer(body, 'binary');

之后,一切正常。

另一种方式来做到这一点,如果你真的不想触及请求npm,将传递一个实现了Writable Stream的对象在responseBodyStream参数中请求。 然后这个对象将来自响应的stream数据存储在它自己的缓冲区中。 也许有一个图书馆已经这样做了……我不确定。

我现在要把它留在这里,但如果你想让我澄清任何事情,请随时发表评论。