JSFiddle - React, Tailwind, and code Playground

by eithe

JavaScript

function chunk(arr, n) {
        return arr.reduce(function(p, cur, i) {
            (p[i/n|0] = p[i/n|0] || []).push(cur);
            return p;
        },[]);
    }
    
    function grid(array, img)
    {
        var _ = [];
        for (var i=0; i<array.length; i++)
        {
            var x = i % img.width;
            var y = parseInt(i / img.width);
            
            if (!_[x])
                _[x] = [];
            
            _[x][y] = array[i];
        }
        
        return _;
    }
    
    function pixelate(array, args)
    {
        var _ = [];
        
        for (var i=0; i<array.length; i++)
            for (var j=0; j<array[i].length; j++)
            {
                var x = i % args.width;
                var y = j % args.height;
                
                var _x = parseInt(i / args.width);
                var _y = parseInt(j / args.height);
                
                if (!_[_x])
                    _[_x] = [];
                
                if (!_[_x][_y])
                    _[_x][_y] = {r: 0, g: 0, b: 0, i: 0, pixels: []};
                
                if (!_[_x][_y].pixels[x])
                    _[_x][_y].pixels[x] = [];
                
                array[i][j].r = array[i][j][0];
                array[i][j].g = array[i][j][1];
                array[i][j].b = array[i][j][2];
                
                _[_x][_y].pixels[x][y] = array[i][j];
                
                _[_x][_y].r += array[i][j][0];
                _[_x][_y].g += array[i][j][1];
                _[_x][_y].b += array[i][j][2];
                _[_x][_y].i++;
            }
        
        for(var i=0; i<_.length; i++)
            for(var j=0; j<_[i].length; j++)
            {
                _[i][j].r = parseInt(_[i][j].r / _[i][j].i);
                _[i][j].g = parseInt(_[i][j].g / _[i][j].i);
                _[i][j].b = parseInt(_[i][j].b / _[i][j].i);
            }
        
        return _;
    }
    
    function extend(_)
  ...