OWOP Image To Pixel

Pinta a Imagem esolhida dentro do OWOP

当前为 2021-11-01 提交的版本,查看 最新版本

// ==UserScript==
// @name         OWOP Image To Pixel
// @match        *.ourworldofpixels.com/*
// @description  Pinta a Imagem esolhida dentro do OWOP
// @author       Pedro Henrique
// @version 1.4
// @namespace https://greasyfork.org/users/831014
// @icon https://www.google.com/s2/favicons?domain=ourworldofpixels.com
// ==/UserScript==
var x = 0;
var y = 0;
var image = "";
var delay = 50;
var pointpaint = false;
var running;
function run()
{
    console.log(image);
    var eae = image.split(';');
    var eaelength = eae.length;
    var totalsize = [parseInt(eae[eaelength-6]),parseInt(eae[eaelength-5])];
    if (pointpaint == false) // HORIZONTAL PAINT
    {
        running = setInterval(function() {
            loop:
            for (var i = 1; i < eae.length; i++) {
                var x1 = x + parseInt(eae[(i*5)-5]);
                var y1 = y + parseInt(eae[(i*5)-4]);
                var red = parseInt(eae[(i*5)-3]);
                var green = parseInt(eae[(i*5)-2]);
                var blue = parseInt(eae[(i*5)-1]);
                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+29) && x1>(OWOP.mouse.tileX-29) && y1>(OWOP.mouse.tileY-29) && y1<(OWOP.mouse.tileY+29))
                    {
                        OWOP.world.setPixel(x1, y1, [red, green, blue], false)
                        break loop;
                    }
                }
            }
        }, delay);
    }
    else // POINT PAINT
    {
        running = setInterval(function() {
        var iposX = OWOP.mouse.tileX-x;
        var iposY = OWOP.mouse.tileY-y;
        var currentpos = ((iposX+1) + (totalsize[0] * iposY))+iposY
        if (currentpos < 0 || currentpos > eaelength)
        {
            currentpos = 1
        }
            loop:
            for (var i = currentpos; i < eae.length; i++) {
                var x1 = x + parseInt(eae[(i*5)-5]);
                var y1 = y + parseInt(eae[(i*5)-4]);
                var red = parseInt(eae[(i*5)-3]);
                var green = parseInt(eae[(i*5)-2]);
                var blue = parseInt(eae[(i*5)-1]);
                // alert(x1 + "/" + y1 + "/" + red + "/" + green + "/" + blue);
                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+29) && x1>(OWOP.mouse.tileX-29) && y1>(OWOP.mouse.tileY-29) && y1<(OWOP.mouse.tileY+29))
                    {

                        OWOP.world.setPixel(x1, y1, [red, green, blue], false)
                        break loop;
                    }
                }
            }
        }, delay);
    }
}
function openSeekbarWindow() {
    OWOP.windowSys.addWindow(new OWOP.windowSys.class.window('Colocar Imagem em pixel', {}, function(win) {
        win.container.title = 'Pintar a Imagem';
        win.container.style.height = 'auto';
        win.container.style.width = '100px';
        win.container.style.overflow = 'hidden';
        win.addObj(document.createTextNode('Escolher Imagem'));
        win.addObj(OWOP.util.mkHTML('div',{}));
        var imagem = OWOP.util.mkHTML('img', {
            id:'imagem',
            width:32,
            height:32,
        })
        win.addObj(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();
                            document.getElementById("imagem").src = e.target.result;
                            img.src = await e.target.result;
                            console.log(img.width);
                            console.log(img.height);
                            console.log(input.files[0]);
                            var canvas = document.createElement('canvas');
                            canvas.width = img.width;
                            canvas.height = img.height;

                            var context = canvas.getContext('2d');
                            context.drawImage(img, 0, 0, img.width, img.height);

                            image = "";
                            for(var v = 0;v<img.height;v++)
                                {
                                    for (var i = 0;i<img.width;i++)
                                    {
                                        var pixelData = context.getImageData(i, v, 1, 1).data;
                                        let code = i + ";" + v + ";" + pixelData[0] +";"+pixelData[1]+";"+pixelData[2]+";";

                                        image += code.toString();
                                    }
                                }
                        }

                        reader.readAsDataURL(input.files[0]);
                    }
                }
                readURL(this)
            }
        });
        win.addObj(escolherimagem);

        win.addObj(document.createTextNode('X : '));
        var inputX = OWOP.util.mkHTML('input', {
            id: 'Xinput',
            oninput: function() {
                x = parseInt(this.value);
            }
        });
        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);

        var delaytext = win.addObj(document.createTextNode('Delay : '));
        var delayinput = OWOP.util.mkHTML('input', {
            id: 'delayinput',
            type: 'range',
            min: 1, max: 500,
            oninput: function() {
                delay = parseInt(this.value);
                delaytext.nodeValue = "Delay : " + delay
            }
        });
        win.addObj(delayinput);

        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',{}));

        var button = OWOP.util.mkHTML('button', {
            id: 'Ativacao',
            innerHTML: 'Ativar',
            onclick: function() {
                    if (document.getElementById("Xinput").value != "") {
                        if (document.getElementById("Yinput").value != "") {
                            run();
                     }
                }
            }
        });
        win.addObj(button);
        var desativar = OWOP.util.mkHTML('button', {
            id: 'Desativacao',
            innerHTML: 'Desativar',
            onclick: function() {
                    clearInterval(running);
            }
        });
        win.addObj(desativar);

        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));
}

if (typeof OWOP != 'undefined') openSeekbarWindow();
window.addEventListener('load', function() {
    setTimeout(openSeekbarWindow, 1234);
});