JSFiddle - React, Tailwind, and code Playground
by John Schulz
HTML
<img src="http://desandro.com/content/2.resources/5.close-pixelate/img/stanley-small.jpg" />
JavaScript
var image2canvas = (function(global, document, undefined) {
function image2canvas(img, opts) {
if (!img) return;
for (var key in opts) image2canvas[key] = opts[key];
image2canvas.init.apply(image2canvas, arguments);
}
var defaults = {
areSameOrigin: (function(global, document, undefined) {
function areSameOrigin(remoteURL, localURL) {
var local = areSameOrigin.parse(localURL || document.location.href),
remote = areSameOrigin.parse(remoteURL),
localOrigin = local.protocol + '//' + (document.domain || local.authority) + ':' + local.port,
remoteOrigin = remote.protocol + '//' + remote.authority + ':' + remote.port,
isRelative = (!remote.authority) && remote.relative,
isLocal = /^(?:file|data)$/.test(remote.protocol) || isRelative,
isSame = localOrigin === remoteOrigin;
return !!(isLocal || isSame);
};
// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
areSameOrigin.parse = function(str) {
var o = areSameOrigin.parse.options,
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
uri = {},
i = 14;
while (i--) uri[o.key[i]] = m[i] || "";
uri[o.q.name] = {};
uri[o.key[o.q.index]].replace(o.q.parser, function($0, $1, $2) {
if ($1) uri[o.q.name][$1] = $2;
});
return uri;
};
areSameOrigin.parse.options = {
strictMode: true,
key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
q: {
index: 12,
...