我正在使用npm包clarifai
来访问Clarifai API。我需要使用getTagsByImageBytes
函数,但我得到了这个答案:
{“status_code”:“ALL_ERROR”,“status_msg”:“请求中的所有图片均已失败。请查看每张图片的错误消息。”,“meta”:{},“results”:[{“docid” :2.0371991595148082e + 38,“status_code”:“CLIENT_ERROR”,“status_msg”:“数据加载失败,详见结果。”,“local_id”:“”,“结果”:{“错误”:“数据0是不是有效的,因为:数据已损坏或数据类型不受支持..“},”docid_str“:”99430754f1cd37d149b992bc635f685f“}]}
我的图像编码有问题。以下是我到目前为止尝试获取的方法(path
是我的图片的本地路径,bytes
我要发送给Clarifai的变量:
const fs = require('fs');
let path = 'path/to/any/image';
let buffers = [];
let bytes;
// creating a reading stream
const readable = fs.createReadStream(path);
// the read content is added to the buffer array
readable.on('data', (chunk) => {
buffers.push(chunk);
});
// all the data read are joined in a single buffer
readable.on('end', () => {
bytes = Buffer.from(buffers.join(), 'binary').toString('base64');
// here the goal is to have a valid base64 encoded image
console.log(bytes);
});
我也尝试发送JSON.stringify
和.toString
版本失败了。我想我错过了对预期字节数组的理解,是否有人帮助我?
谢谢!
更新:我更改了上面的代码和错误消息,以更新我上次的尝试。
答案 0 :(得分:0)
好的,我有一个解决方案。当我使用此答案中的代码时,它实际上正在工作:NodeJS base64 image encoding/decoding not quite working
我的功能已成为:
let path = 'my/path/to/image';
fs.readFile(path, function(err, original_data){
if(err){
return;
}
else{
// this variable contains the correctly encoded image. Just use it as it is in the Clarifai API
var base64Image = original_data.toString('base64');
console.log(base64Image);
}
});
我希望它可以帮助其他人。玩得开心!