您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Upload and repeatedly stamp an image locally on your Drawaria.online canvas (not synced with others).
// ==UserScript== // @name Drawaria.Online Local Image Marker // @namespace http://tampermonkey.net/ // @version 1.1 // @description Upload and repeatedly stamp an image locally on your Drawaria.online canvas (not synced with others). // @author ChatGPT // @match https://drawaria.online/* // @grant none // ==/UserScript== (function() { 'use strict'; let stampingInterval = null; let img = null; function getCanvas() { return document.querySelector('canvas'); } function addUI(canvas) { if(document.getElementById('image-marker-btn')) return; const btn = document.createElement('button'); btn.id = 'image-marker-btn'; btn.textContent = 'Upload & Stamp Image Locally'; btn.style.position = 'fixed'; btn.style.top = '10px'; btn.style.right = '10px'; btn.style.zIndex = 9999; btn.style.padding = '8px 12px'; btn.style.fontSize = '14px'; btn.style.cursor = 'pointer'; btn.style.backgroundColor = '#3399ff'; btn.style.color = '#fff'; btn.style.border = 'none'; btn.style.borderRadius = '6px'; btn.addEventListener('click', () => { if (stampingInterval) { clearInterval(stampingInterval); stampingInterval = null; btn.textContent = 'Upload & Stamp Image Locally'; return; } // Open file selector const input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*'; input.style.display = 'none'; input.onchange = e => { const file = e.target.files[0]; if (!file) return; const reader = new FileReader(); reader.onload = ev => { img = new Image(); img.onload = () => { startStamping(canvas, img); btn.textContent = 'Stop Stamping'; }; img.onerror = () => alert('Failed to load the image.'); img.src = ev.target.result; }; reader.readAsDataURL(file); }; document.body.appendChild(input); input.click(); document.body.removeChild(input); }); document.body.appendChild(btn); } function startStamping(canvas, img) { const ctx = canvas.getContext('2d'); const stampWidth = 100; const stampHeight = stampWidth * img.height / img.width; stampingInterval = setInterval(() => { const x = Math.random() * (canvas.width - stampWidth); const y = Math.random() * (canvas.height - stampHeight); ctx.drawImage(img, x, y, stampWidth, stampHeight); }, 500); } function init() { const canvas = getCanvas(); if(canvas) { addUI(canvas); } else { setTimeout(init, 1000); } } init(); })();