Agar.io custom picture to skin

Upload image for custom skin

目前為 2023-04-27 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Agar.io custom picture to skin
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Upload image for custom skin
// @author       New Jack 🕹️
// @match        agar.io/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    function createButton() {
        const button = document.createElement("input");
        button.type = "file";
        button.accept = "image/*";
        button.id = "customImageUpload";
        return button;
    }

    function insertButton(button, target) {
        if (target) {
            target.appendChild(button);
        }
    }

    function convertImageToBase64(event) {
        const file = event.target.files[0];
        const reader = new FileReader();

        reader.onloadend = function () {
            const base64 = reader.result;
            drawImage(base64);
        };

        reader.readAsDataURL(file);
    }

    function drawImage(base64) {
        const c = document.getElementById("skin-editor-canvas");
        const ctx = c.getContext("2d");
        const image = new Image();

        image.onload = function () {
            // Set the canvas size to 512x512
            c.width = 512;
            c.height = 512;

            // Draw the image on the canvas, resizing it to 512x512
            ctx.drawImage(image, 0, 0, 512, 512);
            ctx.save();
        };

        image.src = base64;
    }

    function checkForRightTools() {
        const rightTools = document.querySelector(".right-tools");

        if (rightTools) {
            const button = createButton();
            insertButton(button, rightTools);
            button.addEventListener("change", convertImageToBase64);

            // Clear the interval once the button is added.
            clearInterval(checkInterval);
        }
    }

    // Check for the .right-tools element every 5 seconds (5000 milliseconds).
    const checkInterval = setInterval(checkForRightTools, 5000);
})();