!function(n,t){"use strict";var e=function(n,t){var e=document.createElement("canvas");return e.setAttribute("width",n),e.setAttribute("height",t),e.getContext("2d")},r=function(n,t){var r=new Image,i=n.src||n;"data:"!==i.substring(0,5)&&(r.crossOrigin="Anonymous"),r.onload=function(){var n=e(r.width,r.height);n.drawImage(r,0,0);var i=n.getImageData(0,0,r.width,r.height);t&&t(i.data)},r.src=i},i=function(n){return["rgb(",n,")"].join("")},a=function(n){var t=[];for(var e in n)t.push(o(e,n[e]));return t.sort(function(n,t){return t.count-n.count}),t},u=function(n,t){if(n.length>t)return n.slice(0,t);for(var e=n.length-1;t-1>e;e++)n.push(o("0,0,0",0));return n},o=function(n,t){return{name:i(n),count:t}},c=10,s={};s.colors=function(n,e){e=e||{};var o=e.exclude||[],s=e.paletteSize||c;r(n,function(n){for(var r={},c="",f=[],d=0;d (c+c)); } else if(str.length === 6){ arr = str.match(/[a-zA-Z0-9]{2}/g); } else{ throw new Error('wrong color format'); } return arr.map((c) => parseInt(c, 16)); } throw new Error('color should be string'); } /* * rgb value to hsl 色相(H)、饱和度(S)、明度(L) */ function rgbToHsl(rgbStr){ let [r, g, b] = parseRGB(rgbStr); r /= 255, g /= 255, b /= 255; let max = Math.max(r, g, b), min = Math.min(r, g, b); let h, s, l = (max + min) / 2; if(max == min){ h = s = 0; }else{ let d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch(max){ case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return [h, s, l]; } /* * 判断颜色属于深色还是浅色 */ function isColorDarkOrLight(rgbStr){ var color = rgbToHex(rgbStr); let [h, s, l] = rgbToHsl(color); return (l > 0.5)? 'light' : 'dark'; } var headerColor; var img = $('.k-post-media').css('background-image').replace('url(','').replace(')','').replace(/\"/gi, ""); var colors = RGBaster.colors(img, { paletteSize: 30, success: function(colors){ headerColor = colors.dominant; localStorage[pagethemecolorid] = headerColor; if(isColorDarkOrLight(colors.dominant) === "dark"){ headertextcolor = '#fff'; localStorage[pagethemecolorid+'text'] = headertextcolor; $('header').css('color','#fff'); }else{ headertextcolor = '#000'; localStorage[pagethemecolorid+'text'] = headertextcolor; $('header').css('color','#000'); } $('header').css('background-color',colors.dominant); $("meta[name='theme-color']").attr('content', colors.dominant); } });