UNPKG

base64-image-utils

Version:
55 lines (44 loc) 1.44 kB
var base64ImageToRGBArray = function(base64, callback, options) { var opts = options || {}; var img = new window.Image(); img.onload = function onImageLoad() { var canvas = document.createElement("canvas"); var ctx; var data; var result; var resizeRatio = 1; if (opts.size) { resizeRatio = opts.size / Math.max(img.width, img.height); } if (opts.maxSize) { if (img.width > opts.maxSize || img.height > opts.maxSize) { resizeRatio = opts.maxSize / Math.max(img.width, img.height); } } var imageWidth = Math.floor(img.width * resizeRatio); var imageHeight = Math.floor(img.height * resizeRatio); canvas.width = imageWidth; canvas.height = imageHeight; ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, imageWidth, imageHeight); data = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height).data; result = []; for (var y = 0; y < canvas.height; y++) { for (var x = 0; x < canvas.width; x++) { result.push({ x: x, y: y, rgb: { r: data[y * canvas.width * 4 + x * 4], g: data[y * canvas.width * 4 + x * 4 + 1], b: data[y * canvas.width * 4 + x * 4 + 2], a: data[y * canvas.width * 4 + x * 4 + 3] } }); } } callback(null, result); }; img.src = base64; }; module.exports = base64ImageToRGBArray;