Convert image to JSON Base64 and POST to a REST API

Convert image to JSON Base64 and POST to a REST API

by Yamini Sontakke

HTML

<input id="urlText" />
<input id="sendData" type="submit" />
<img id="img" src="http://fiddle.jshell.net/img/logo.png" />

JavaScript

var imgElem = document.getElementById('img');
$('#urlText').keyup(function(){
   $('#img').attr('src',$('#urlText').val());
});
   
$('#sendData').click(function(){
var imgData = JSON.stringify(getBase64Image(imgElem));
  $.ajax({
  url: 'http://url.com/rest/api',
  dataType: 'json',
  data: imgData,
  type: 'POST',
  success: function(data) {
    console.log(data);
    }
  });
});

function getBase64Image(imgElem) {
// imgElem must be on the same server otherwise a cross-origin error will be thrown "SECURITY_ERR: DOM Exception 18"
    var canvas = document.createElement("canvas");
    canvas.width = imgElem.clientWidth;
    canvas.height = imgElem.clientHeight;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(imgElem, 0, 0);
    var dataURL = canvas.toDataURL("image/png");
    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}