In Spreadsheet Paintings, you upload a photograph from the local disk and it transforms the picture into pixel art. Internally, the JavaScript resizes the image using the HTML5 Canvas API and then uploads the base64-encoded representation of the canvas data to the Google Script using the HTMLService where the pixels are converted into RGB colors.

Image to Base64 with Google Apps Script
const convertImageToDataUri = () => {
  const imageUrl = 'https://i.imgur.com/6rl9Atu.png';
  const blob = UrlFetchApp.fetch(imageUrl).getBlob();
  const base64String = Utilities.base64Encode(blob.getBytes());
  return `data:image/png;base64,${base64String}`;
};Base64 Image with HTML5 Canvas API
<input type="file" id="image" />
<canvas></canvas>
<script>
  $('document').ready(function () {
    $('input[type=file]').on('change', function (f) {
      var file = f.target.files[0];
      if (file) {
        var reader = new FileReader();
        var image = new Image();
        reader.onload = function (e) {
          image.src = e.target.result;
          var canvas = $('canvas')[0];
          canvas.height = image.height;
          canvas.width = image.width;
          var ctx = canvas.getContext('2d');
          ctx.drawImage(image, 0, 0);
          var dataURL = canvas.toDataURL('image/png');
          console.log(dataURL);
        };
        reader.readAsDataURL(file);
      }
    });
  });
</script>Embed Base64 Data URI in HTML
Take the base64 string and add it the the src attribute of an img tag.
<img src="data:image/png;base64,iVBORw0KGg....." /> 
  
  
  
  
 