您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
计算背景像素平均值、标准差等,将纯色背景图改为颜色
// ==UserScript== // @name 去纯色背景 // @namespace com.fachep.pureColorBackgroundOff // @version 0.1 // @description 计算背景像素平均值、标准差等,将纯色背景图改为颜色 // @author Fachep // @license MIT // @match *://www.taobao.com/* // @match *://www.tmall.com/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @connect alicdn.com // ==/UserScript== "use strict"; const globalSelectors = { "^.*$": ["body"], "^[^\\.]+\\.tmall\\.com.*$": ["body>.rax-view-v2"], }; let stdMax = GM_getValue("stdMax"); if (!stdMax) { GM_setValue("stdMax", 16); stdMax = 16; } (function () { for (const reg in globalSelectors) { if (Object.hasOwnProperty.call(globalSelectors, reg)) { if (!new RegExp(reg, "i").test(window.location.href)) continue; const selectors = globalSelectors[reg]; for (const selector of selectors) { bgOff(document.querySelector(selector)); } } } })(); function bgOff(ele) { let bg = window .getComputedStyle(ele) .getPropertyValue("background-image") ?.match(/url\(\s*?['"]?\s*?(\S+?)\s*?["']?\s*?\)/i)?.[1]; if (!bg) return; GM_xmlhttpRequest({ method: "GET", url: bg, responseType: "blob", onload: (res) => { createImageBitmap(res.response).then((img) => { let [width, height] = [img.width, img.height]; let cvs = new OffscreenCanvas(width, height); let ctx = cvs.getContext("2d"); ctx.imageSmoothingEnabled = false; ctx.clearRect(0, 0, width, height); ctx.drawImage(img, 0, 0); let data = ctx.getImageData(0, 0, width, height).data; let length = data.length / 4; if (length != width * height) return; let [r, g, b, a] = [0, 0, 0, 0]; for (let i = 0; i < length; i++) { r += data[i * 4 + 0]; g += data[i * 4 + 1]; b += data[i * 4 + 2]; a += data[i * 4 + 3]; } let [ra, ga, ba, aa] = [ r / length, g / length, b / length, a / length, ]; let [rs, gs, bs, as] = [0, 0, 0, 0]; for (let i = 0; i < length; i++) { rs += (data[i * 4 + 0] - ra) ** 2; gs += (data[i * 4 + 1] - ga) ** 2; bs += (data[i * 4 + 2] - ba) ** 2; as += (data[i * 4 + 3] - aa) ** 2; } let [rsa, gsa, bsa, asa] = [ Math.sqrt(rs / length), Math.sqrt(gs / length), Math.sqrt(bs / length), Math.sqrt(as / length), ]; if ( rsa < stdMax && gsa < stdMax && bsa < stdMax && asa < stdMax ) { ele.style.setProperty("background-image", "none"); ele.style.setProperty( "background-color", `rgba(${ra} ${ga} ${ba} / ${( (aa / 255) * 100 ).toFixed()}%)` ); } }); }, }); }