您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Icon loader from local images for FPv2 icon editor.
// ==UserScript== // @name FP2 Icon Loader // @author Creec Winceptor // @description Icon loader from local images for FPv2 icon editor. // @namespace https://greasyfork.org/users/3167 // @grant none // @include http*://facepunchforum.azurewebsites.net* // @include http*://lab.facepunch.com* // @run-at document-idle // @version 0.0.1.20160604001845 // ==/UserScript== //http://stackoverflow.com/a/14570614 var observeDOM = (function(){ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver, eventListenerSupported = window.addEventListener; return function(obj, callback){ if( MutationObserver ){ // define a new observer var obs = new MutationObserver(function(mutations, observer){ if( mutations[0].addedNodes.length || mutations[0].removedNodes.length ) callback(); }); // have the observer observe foo for changes in children obs.observe( obj, { childList:true, subtree:true }); } else if( eventListenerSupported ){ obj.addEventListener('DOMNodeInserted', callback, false); obj.addEventListener('DOMNodeRemoved', callback, false); } } })(); var fp2iconloader = false; function Init(retries) { var content_div = document.getElementById("content"); if (content_div) { observeDOM( content_div ,function(){ Load(0); }); fp2iconloader = true; //console.log("initiated"); Load(retries); } else { if (retries>0) { setTimeout(function() { Init(retries-1); }, 500) } else { //console.log("failed to load"); } } } function Load(retries) { //console.log("loading"); var file_input = document.getElementById("file_input"); if (file_input || !fp2iconloader) { //console.log("return"); return; } else { var tools_panel = document.getElementsByClassName("panel tools")[0]; var text_input = document.getElementsByName("textinput")[1]; if (tools_panel && text_input) { var file_input = document.createElement("input"); file_input.type = "file"; file_input.id = "file_input"; var hr_break = document.createElement("hr"); tools_panel.appendChild(hr_break); tools_panel.appendChild(file_input); file_input.onchange = function(e) { var res = 16; var URL = window.webkitURL || window.URL; var url = URL.createObjectURL(e.target.files[0]); var img = new Image(); img.src = url; img.onload = function() { pixelarray = []; if(!img.canvas) { img.canvas = $('<canvas />')[0]; img.canvas.width = res; img.canvas.height = res; img.canvas.getContext('2d').drawImage(img, 0, 0, res, res); } var count = 0; for (var x=0; x<res; x++) { for (var y=0; y<res; y++) { var pixelData = img.canvas.getContext('2d').getImageData(y, x, 1, 1).data; pixelarray[count] = Math.round(pixelData[0]/256 * 9) + Math.round(pixelData[1]/256 * 9) * 10 + Math.round(pixelData[2]/256 * 9) * 100 + 1; if (pixelData[3]<128) { pixelarray[count] = 0; } count++; } } text_input.value = EncodeIconData(pixelarray); text_input.dispatchEvent(new Event('change')); } }; } else { if (retries>0) { setTimeout(function() { Load(retries-1); }, 500) } else { //console.log("failed to load"); } } //console.log("done"); } } Init(10);