javascript - 使用字节的 AWS Rekognition JavaScript SDK

标签 javascript amazon-web-services sdk base64 amazon-rekognition

AWS Rekognition Javascript API声明对于 rekognition.compareFaces(params,...)方法中,SourceImageTargetImage 可以采用 BytesS3Object。我想使用 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/

相关文章:

javascript - 我的 three.js 场景没有灯光

javascript - 使用 "if $(element).is(...)"检查数组元素

javascript - 在此受限设置中,eval() 会导致安全问题吗?

amazon-web-services - 如何使用 CloudFormation 创建此 DynamoDb 表组?

java - 如何在 Android Studio 1.0.1 上运行 Facebook 示例应用程序

javascript - 如何在数组 NodeJS 中获取唯一和最小的对象

amazon-web-services - IAM 用户的 AWS CLI 用法

java - Amazon Elasticache Redis 集群 - 无法获取端点

c# - 在 C# 中使用 Canon SDK 时出现 SDK 错误 : 0x8D07,

visual-studio - 尝试使用 WinSock2 时出现 "cannot open qos.h"