【发布时间】:2013-08-24 08:39:04
【问题描述】:
我有一个 web 服务,它接受一个表示图像的 base 64 编码字符串,使用 imagemagick 库创建该图像的缩略图,然后将它们都存储在 mongodb 中。我正在使用以下代码(大约)执行此操作:
var buf = new Buffer(req.body.data, "base64"); //original image
im.resize({ srcData: buf, width: 256 }, function(err, stdout, stderr) {
this.thumbnail = new Buffer(stdout, "binary");
//store buf and stdout in mongo
});
你会注意到我正在使用“二进制”编码创建一个 Buffer 对象,docs 说不要这样做:
'binary' - 一种将原始二进制数据编码为字符串的方法,使用 只有每个字符的前 8 位。这种编码方式是 已弃用,应避免使用 Buffer 对象,其中 可能的。此编码将在 Node 的未来版本中移除。
首先我不确定他们在说什么。我正在尝试创建一个 Buffer 对象,他们似乎暗示我应该已经有了一个。
其次,问题的根源似乎是 imagemagick resize 方法返回一个包含二进制数据的字符串。执行 typedef(stdout) return "string" 并将其打印到屏幕上肯定会显示一堆非字符数据。
那我在这里做什么?我无法改变 imagemagick 的工作方式。还有其他方法可以做我想做的事情吗?
【问题讨论】:
标签: node.js mongodb binary mongoose