我想将图像数据块转换为图像。但是我似乎无法成功。这是我要转换的块类型。
- 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图像。
答案 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的对象来请求。然后,该对象将响应中的流数据存储在自己的缓冲区中。也许有一个库已经做到了......我不确定。
我现在要把它留在这里,但如果你想让我澄清任何事情,请随时发表评论。