我正在使用GraphicsMagic来修改图像。在图像上绘制文本后,我需要将结果图像上传到s3存储桶。但是我怀疑toBuffer()返回空结果,因为我收到了以下错误:
失败:预期的params.Body是一个字符串,Buffer,Stream,Blob或类型化数组对象
这是我的代码:
s3.getObject({Bucket: srcBucket, Key: srcKey}).promise()
.then(data => gm(data.Body)
.fill('white')
.stroke('black', 1)
.drawText(0, -60, text.toUpperCase(), 'center')
.toBuffer(imageType,function (err, buffer) {
if (err) return handle(err);
console.log('done!');
})
)
.then(buffer => s3.putObject({
Body: buffer,
Bucket: dstBucket,
ContentType: buffer.ContentType,
Key: dstKey,
}).promise()
)
.then(() => callback(null, {
statusCode: 200,
body: JSON.stringify({
url: dstKey
})
})
)
.catch(err => callback(err))
答案 0 :(得分:1)
我认为你只能通过toBuffer
中提供的回调获得缓冲区。我假设你的代码中有一些定义为callback
的函数:
s3.getObject({Bucket: srcBucket, Key: srcKey}).promise()
.then(data => gm(data.Body)
.fill('white')
.stroke('black', 1)
.drawText(0, -60, text.toUpperCase(), 'center')
.toBuffer(imageType,function (err, buffer) {
if (err) return handle(err);
s3.putObject({
Body: buffer,
Bucket: dstBucket,
ContentType: buffer.ContentType,
Key: dstKey,
}).promise()
.then(() => callback(null, {
statusCode: 200,
body: JSON.stringify({
url: dstKey
})
})
)
.catch(err => callback(err))
// console.log('done!');
})
)