节点写入块到图像

时间:2016-08-04 12:23:43

标签: javascript node.js chunks

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

- ThisString 内容类型: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-ƴ ž&安培; R8پS + ICL)6,@ *一个Ĵ} JM =W N9 4 T 3 Rb #0E, w &L ne C dJWd : (˸ |!?Z_8(G \ caB7MPq,O3NòH= E8TupdfH 3 jK ] W8 3QK v Q am \ 8 x E pI N Y6ZE!j nI = H\c Z Ic.c @ AYKv :T:پTRŎ y-]Q ....

如何将此数据保存为jpeg图像。

1 个答案:

答案 0 :(得分:3)

问题是在javascript字符串中编码和存储二进制数据。在http://nodejs.org/api.html的Buffers下有一个相当不错的部分。

不幸的是,解决此问题的最简单方法是更改​​请求npm。我必须在/path/to/lib/node/.npm/request/active/package/lib/main.js中response.setEncoding('binary');下方的第66行添加var buffer;。这适用于此请求但不适用于其他请求。您可能想要破解它,以便仅基于其他一些传递选项进行设置。

然后我改变了

var buf = new Buffer(body)

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

在此之后,一切正常。

另一种方法是,如果你真的不想触摸请求npm,那就是在requestBodyStream参数中传入一个实现Writable Stream的对象来请求。然后,该对象将响应中的流数据存储在自己的缓冲区中。也许有一个库已经做到了......我不确定。

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