AWS Rekognition Javascript API声明对于 rekognition.compareFaces(params,...)
方法中,SourceImage
和 TargetImage
可以采用 Bytes
或 S3Object
。我想使用 Bytes
可以是
"Bytes — (Buffer, Typed Array, Blob, String)"
Blob of image bytes up to 5 MBs.
当我传递图像的 Base64
编码字符串时,JS SDK 再次重新编码(即双重编码)。因此服务器响应错误说
{"__type":"InvalidImageFormatException","Message":"Invalid image encoding"}
有没有人设法使用 compareFaces JS SDK API使用 base64 编码图像(不是 S3Object
)?或任何使用 Bytes
参数的 JavaScript 示例都会有所帮助。
最佳答案
来自这个的技术AWS Rekognition JS SDK Invalid image encoding error线程工作。
将 base64 图像编码转换为 ArrayBuffer :
function getBinary(base64Image) {
var binaryImg = atob(base64Image);
var length = binaryImg.length;
var ab = new ArrayBuffer(length);
var ua = new Uint8Array(ab);
for (var i = 0; i < length; i++) {
ua[i] = binaryImg.charCodeAt(i);
}
return ab;
}
传入rekognition作为 Bytes
参数:
var data = canvas.toDataURL('image/jpeg');
var base64Image = data.replace(/^data:image\/(png|jpeg|jpg);base64,/, '');
var imageBytes = getBinary(base64Image);
var rekognitionRequest = {
CollectionId: collectionId,
Image: {
Bytes: imageBytes
}
};
关于javascript - 使用字节的 AWS Rekognition JavaScript SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43494736/