【发布时间】:2017-11-29 07:50:31
【问题描述】:
我有一个 Node.js 应用程序。在这个应用程序中,我使用 this API 从 Azure 存储加载图像文件。具体来说,我正在使用createReadStream 函数。该函数提供了一个从图像中读取的流。现在,我的代码如下所示:
let chunks = [];
let sharp = require('sharp');
let fileStream = this.fileService.createReadStream('[MY_SHARE]', '[MY_DIRECTORY]', '[MY_PICTURE_NAME]', (err, fileResult, res) => {
console.log('Sharpening image...');
console.log(imageChunks);
sharp(chunks).resize(100, 100).toFile('resized.png', function(err1, info) {
if (err1) {
console.log('oops');
}
});
});
fileStream.on('data', function(chunk) {
chunks.push(chunk);
});
在这个块中,请注意我正在尝试使用Sharp node module。在sharp(chunks)... 行之前,我将图像块打印到控制台。在控制台中打印时,我看到以下内容:
[ <Buffer 87 52 4e 47 0d 0a 1a 0a 01 02 04 0d 49 48 44 52 00 00 06 18 00 00 06 0f 08 06 00 00 00 75 c2 f0 a2 00 00 00 04 67 42 4d 41 00 00 b2 8f 0a fc 61 05 00 ... > ]
但是,当我打电话给 Sharp 时,我收到一条错误消息:
Error: Unsupported input object
根据文档,Sharp Constructor 允许使用字符串或缓冲区。看看上面打印到控制台的内容,看起来我正在将缓冲区传递给 Sharp。我是不是误会了什么?如果有,是什么?
【问题讨论】:
-
“看看打印到控制台的内容,看起来我正在将一个缓冲区传递给 Sharp” - 嗯,对我来说,它看起来就像你传递了一个数组(您的日志打印的是
imageChunks而不是chunks)。