Skip to main content

The technique from this AWS Rekognition JS SDK Invalid image encoding error thread worked.

Convert the base64 image encoding to a ArrayBufferArrayBuffer:

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;
}

Pass into rekognitionrekognition as BytesBytes parameter:

    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
      }
    };

The technique from this AWS Rekognition JS SDK Invalid image encoding error thread worked.

Convert the base64 image encoding to a 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;
}

Pass into rekognition as Bytes parameter:

    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
      }
    };

The technique from this AWS Rekognition JS SDK Invalid image encoding error thread worked.

Convert the base64 image encoding to a 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;
}

Pass into rekognition as Bytes parameter:

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
  }
};
Source Link

The technique from this AWS Rekognition JS SDK Invalid image encoding error thread worked.

Convert the base64 image encoding to a 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;
}

Pass into rekognition as Bytes parameter:

    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
      }
    };