2016-08-04 69 views
1

我想图像数据块转换为图像。不过,我似乎无法成功。这是我想要转换的块的类型。节点写入块图像

--ThisString 内容类型:image/JPEG 内容长度:29016

JFIF(#(## - +(0 } 1AQa“Q2! #BR $ 3房
%&“()* 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
w! 1AQaq“2 B #3R br $4 % &'()56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?A6 uM t ! # Q < | [\ U>^= MG-ƴž& R8پS + i C l )6 ,@ *a J} JM=W N9 4 T 3 Rb #0E, w^&大号NECշdJWd :(˸| Z_8(G \ caB7MPq,!? 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图像。

回答

1

问题是编码并存储在javascript串的二进制数据。在缓冲区http://nodejs.org/api.html下有一个相当不错的部分。

不幸的是,解决这个问题的最简单方法是更改​​请求npm。为此,我不得不线66下方var buffer;在/path/to/lib/node/.npm/request/active/package/lib/main.js添加response.setEncoding('binary');。这对于此请求可以正常工作,但对其他人无效。您可能想要对其进行破解,以便仅根据其他已通过的选项进行设置。

我再改

var buf = new Buffer(body)

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

之后,一切正常。

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

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

+0

是的,请您澄清第二个选项。一个小例子将不胜感激。谢谢。 – Jones