SecondFry / Pixelator (by Pixelate.js)

// ==UserScript==
// @name         Pixelator (by Pixelate.js)
// @description  Pixelates all images on page
// @copyright    2016, Rustam Second_Fry Gubaydullin (http://twitter.com/second_fry)
// @license      MIT; https://github.com/secondfry/license/raw/master/LICENSE
// @homepageURL  https://github.com/secondfry/pixelate.js
// @author       Rustam @Second_Fry Gubaydullin
// @author       SecondFry
// @version      0.1
// @include      *
// @grant        none
// ==/UserScript==
/* jshint -W097 */
'use strict';

function ready(fn) {
  if (document.readyState != 'loading'){
    fn();
  } else {
    document.addEventListener('DOMContentLoaded', fn);
  }
}

function loadPixelateJS(callback) {
    var pixelate_js = document.createElement('script');
    pixelate_js.src = 'https://secondfry.github.io/pixelate.js/pixelate.min.js';
    pixelate_js.onreadystatechange = callback;
    pixelate_js.onload = callback;
    document.body.appendChild(pixelate_js);
}

function pixelateImages(images) {
    if(images) {
        images.forEach(function(image){
            if(image.complete) {
                image.src = image.src + '?' + new Date().getTime();
            }
            image.addEventListener('load', function(e) {
                this.pixelate({value: 0.25, reveal_on_hover: true});
            })
        })
    }
}

ready(function(){
    loadPixelateJS(function(){
        pixelateImages(document.querySelectorAll('img'));
        document.addEventListener('DOMNodeInserted', function(e) {
            if(e.target && e.target.querySelectorAll) {
                pixelateImages(e.target.querySelectorAll('img'));
            }
        })
    })
});