使用<input type="file">
,通过React构建简单的AWS Rekognition演示
获取Invalid image encoding
错误。
let file = e.target.files[0];
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onloadend = () => {
let rekognition = new aws.Rekognition();
var params = {
Image: { /* required */
Bytes: reader.result,
},
MaxLabels: 0,
MinConfidence: 0.0
};
rekognition.detectLabels(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
GitHub存储库:https://github.com/html5cat/vision-test/
GitHub问题:https://github.com/html5cat/vision-test/issues/1
3条答案
按热度按时间eni9jsuy1#
您可以尝试将reader.result转换为二进制字节。
实际上,您可以为Bytes设置上述方法的响应:
oaxa6hgo2#
如果有人在节点端这样做,我在将文件作为字节数组缓冲区阅读入并将其发送到Rekognition时也遇到了类似的问题。
我解决这个问题的方法是阅读base64表示,然后将其转换为如下缓冲区:
这也可能与人们获得以下信息有关:
Expected params.Image.Bytes to be a string, Buffer, Stream, Blob, or typed array object
消息。ckocjqey3#
ReadAsDataUrl的返回值包括一个前缀,用于指示数据的MIME类型和编码。(“**image/png; base64、**IVBOR数据库数据库数据库数据库...”)。
但是,Rekognition API只需要图像的编码字节,而不需要任何前缀。
尝试
reader.result.split(',')[1]
过滤掉前缀,只传递请求中的编码字节。