您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Script that inserts the image for pixelart in OWOP
// ==UserScript== // @name OWOP Image To Pixel // @match *.ourworldofpixels.com/* // @description Script that inserts the image for pixelart in OWOP // @author Pedro Henrique // @license MIT // @version 3.0 // @namespace https://greasyfork.org/users/831014 // @icon https://www.google.com/s2/favicons?domain=ourworldofpixels.com // ==/UserScript== var x = 0; var y = 0; var alphar = 255; var alphag = 255; var alphab = 255; var imagesize = 64; var image = []; var delay = 50; var pointpaint = false; var alphacheck = true; var replacealphacheck = false; var running; function run() { var _lastimagepixel = [parseInt(image[image.length-1][0]), parseInt(image[image.length-1][1])]; running = setInterval(function () { var iposX = OWOP.mouse.tileX - x; var iposY = OWOP.mouse.tileY - y; var currentpos = ((iposX + 1) + (_lastimagepixel[0] * iposY)) + iposY if (pointpaint == true) { if (currentpos < 0 || currentpos > image.length) { currentpos = 0 } } else { currentpos = 0 } loop: for (var i = currentpos; i < image.length; i++) { var x1 = x + parseInt(image[i][0]); var y1 = y + parseInt(image[i][1]); var red = parseInt(image[i][2]); var green = parseInt(image[i][3]); var blue = parseInt(image[i][4]); var alpha = parseInt(image[i][5]); if (replacealphacheck == false && alphacheck == true && alpha < 127) { red = OWOP.world.getPixel(x1, y1)[0]; green = OWOP.world.getPixel(x1, y1)[1]; blue = OWOP.world.getPixel(x1, y1)[2]; } else if (replacealphacheck == true && alpha < 127) { red = alphar; green = alphag; blue = alphab; } if (OWOP.world.getPixel(x1, y1) != null && (OWOP.world.getPixel(x1, y1)[0] != red || OWOP.world.getPixel(x1, y1)[1] != green || OWOP.world.getPixel(x1, y1)[2] != blue)) { if (x1 < (OWOP.mouse.tileX + 30) && x1 > (OWOP.mouse.tileX - 30) && y1 > (OWOP.mouse.tileY - 30) && y1 < (OWOP.mouse.tileY + 30)) { OWOP.world.setPixel(x1, y1, [red, green, blue], false) break loop; } } } }, delay); } function initializeComponent() { OWOP.windowSys.addWindow(new OWOP.windowSys.class.window("Image to PixelArt", {}, function (win) { win.container.style = "height:auto;width:175px;overflow:hidden" // Imagem win.addObj(document.createTextNode('Choose image')); win.addObj(OWOP.util.mkHTML('div', {})); var imagem = OWOP.util.mkHTML('img', { id: 'imagem', width: 32, height: 32, }) win.addObj(imagem); win.addObj(OWOP.util.mkHTML('div', {})); // Tamanho da Imagem var imgsizetxt = win.addObj(document.createTextNode('Image Size (0px) : ')); var imgsizeinput = OWOP.util.mkHTML('input', { id: 'imgsizeinput', value: 64, oninput: function () { imgsizetxt.nodeValue = "Image Size (" + this.value + "px) : " imagesize = this.value; } }); win.addObj(imgsizeinput); // Aplicat tamanho var applysize_button = OWOP.util.mkHTML('button', { id: 'applysize', innerHTML: 'Apply Size', onclick: function () { applysize(); } }); win.addObj(applysize_button); // Escolher imagem var escolherimagem = OWOP.util.mkHTML('input', { id: 'imageminput', type: 'file', oninput: function (evt) { function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onloadend = async function (e) { var img = new Image(); img.src = await e.target.result; document.getElementById("imagem").src = img.src; applysize(); } reader.readAsDataURL(input.files[0]); } } readURL(this) } }); win.addObj(escolherimagem); // Input da posição da imagem no OWOP win.addObj(document.createTextNode('X : ')); var inputX = OWOP.util.mkHTML('input', { id: 'Xinput', oninput: function () { x = parseInt(this.value); } }); win.addObj(OWOP.util.mkHTML('div', {})); win.addObj(inputX); win.addObj(document.createTextNode('Y : ')); var inputY = OWOP.util.mkHTML('input', { id: 'Yinput', oninput: function () { y = parseInt(this.value); } }); win.addObj(inputY); // Delay para aplicar pixel no owop var delaytext = win.addObj(document.createTextNode('Delay : ')); var delayinput = OWOP.util.mkHTML('input', { id: 'delayinput', type: 'range', min: 1, max: 500, oninput: function () { delaytext.nodeValue = "Delay : " + parseInt(this.value); delay = parseInt(this.value); } }); win.addObj(delayinput); // Modo Point Paint, que pinta o pixel onde você está apontando o mouse win.addObj(document.createTextNode('Point Paint')); var pointpaintcheck = OWOP.util.mkHTML('input', { id: 'pointpaintcheck', type: 'checkbox', oninput: function () { pointpaint = this.checked; } }); win.addObj(pointpaintcheck); win.addObj(OWOP.util.mkHTML('div', {})); // Substituir a cor apha do OWOP win.addObj(document.createTextNode('Replace Alpha Color')); var alphainput = OWOP.util.mkHTML('input', { id: 'replacecheck', type: 'checkbox', oninput: function () { replacealphacheck = this.checked; } }); win.addObj(alphainput); // Tipo de cor var coloriralpha = OWOP.util.mkHTML('input', { type: 'color', id: 'replacealphacolor', onchange: function () { alphar = hexToRgb(this.value).r; alphag = hexToRgb(this.value).g; alphab = hexToRgb(this.value).b; } }); win.addObj(coloriralpha); win.addObj(OWOP.util.mkHTML('div', {})); // Opção de ignorar o Alpha da imagem win.addObj(document.createTextNode('Ignore Alpha (.png)')); var alphainput = OWOP.util.mkHTML('input', { id: 'alphacheck', type: 'checkbox', checked: 'true', oninput: function () { alphacheck = this.checked; } }); win.addObj(alphainput); win.addObj(OWOP.util.mkHTML('div', {})); // Botão de Ativar var button = OWOP.util.mkHTML('button', { id: 'EnableImageToPixel', innerHTML: 'Activate', onclick: function () { if (document.getElementById("Xinput").value != "") { if (document.getElementById("Yinput").value != "") { run(); document.getElementById("EnableImageToPixel").disabled = 'true'; } } } }); win.addObj(button); // Botão de desativar var desativar = OWOP.util.mkHTML('button', { id: 'DisableImageToPixel', innerHTML: 'Disable', onclick: function () { clearInterval(running); document.getElementById("EnableImageToPixel").removeAttribute("disabled"); } }); win.addObj(desativar); // Evento para definir a posição da imagem no OWOP document.addEventListener('keydown', (event) => { const keyName = event.key; if (keyName == "e" || keyName == "E") { document.getElementById("Xinput").value = OWOP.mouse.tileX document.getElementById("Yinput").value = OWOP.mouse.tileY x = OWOP.mouse.tileX y = OWOP.mouse.tileY } }); }).move(window.innerWidth - 500, 32)); } function applysize() { var img = new Image(); img.src = document.getElementById("imagem").src var canvas = document.createElement('canvas'); var imgW = 0; var imgH = 0; if (imagesize == 0) { imgW = img.width; imgH = img.height; } else { if (imagesize.toString().includes(";")) { let wh = imagesize.toString().split(";"); imgW = parseInt(wh[0]); imgH = parseInt(wh[1]); } else { imgW = imagesize; imgH = imagesize; } } canvas.width = imgW; canvas.height = imgH; var context = canvas.getContext('2d'); context.drawImage(img, 0, 0, imgW, imgH); //context.drawImage(img, 0, 0, img.width, img.height); image = []; for (var v = 0; v < imgH; v++) { for (var i = 0; i < imgW; i++) { var pixelData = context.getImageData(i, v, 1, 1).data; image.push([i,v,pixelData[0],pixelData[1],pixelData[2],pixelData[3]]) } } } function hexToRgb(hex) { var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16), g: parseInt(result[2], 16), b: parseInt(result[3], 16) } : null; } if (typeof OWOP != 'undefined') initializeComponent(); window.addEventListener('load', function () { setTimeout(initializeComponent, 2000); // Função que auto reconecta o OWOP setInterval(() => { if (document.getElementById("load-options").class == "hide") { document.getElementById("reconnect-btn").click(); } }, 1000); });