hypnohub to hypno.zyntaks.ca
drag me to your bookmarks bar, then click on a HypnoHub post
source code:
function loadPako(cb) { if (typeof pako !== "undefined") return cb(); let s = document.createElement("script"); s.src = "https://cdnjs.cloudflare.com/ajax/libs/pako/2.1.0/pako.min.js"; s.onload = cb; document.head.appendChild(s); } function extractColor(url, cb) { let img = new Image(); img.crossOrigin = "Anonymous"; img.src = url; img.onload = () => { let c = document.createElement("canvas"), x = c.getContext("2d"), m = {}, mc = "", mv = 0; c.width = c.height = 20; x.drawImage(img, 0, 0, 20, 20); let d = x.getImageData(0, 0, 20, 20).data; for (let i = 0; i < d.length; i += 4) { let k = `rgb(${d[i]},${d[i+1]},${d[i+2]})`; m[k] = (m[k] || 0) + 1; if (m[k] > mv) [mv, mc] = [m[k], k]; } cb(mc); }; img.onerror = () => cb(null); } function encodeData(d) { return typeof pako === "undefined" ? null : btoa(String.fromCharCode(...pako.gzip(JSON.stringify(d)))); } function decodeData(e) { return typeof pako === "undefined" ? null : JSON.parse(pako.ungzip(Uint8Array.from(atob(e), c => c.charCodeAt(0)), { to: "string" })); } function generateEncodedData(url, cb) { extractColor(url, c => cb(c ? encodeData({ bgImage: url, spColor: ({ r: (c.split('(')[1].split(')')[0]).split(',')[0], g: (c.split('(')[1].split(')')[0]).split(',')[1], b: (c.split('(')[1].split(')')[0]).split(',')[2] }), textWall: false, messageAlpha: 0.7, randomOrder: false, messageGap: 0.25, messageDuration: 0.25, messages: tags }) : null)); } loadPako(() => { generateEncodedData(document.querySelector('#image').src, e => { window.open(`https://hypno.zyntaks.ca/#${e}`); }); });