AI摘要
油猴脚本“稿定设计增强工具”可拦截并替换水印SVG,实现无水印下载;同时提供清屏与Canvas一键导出PNG功能,安装后自动在编辑器顶部添加按钮。
说明
脚本安装好后就可以在稿定设计网上随便下载无水印的图片了,在工作台编辑的时候水印依然是存在的,这个不用管,先编辑好你的作品。
代码
// ==UserScript==
// [url=home.php?mod=space&uid=170990]@name[/url] 稿定设计增强工具(去水印+下载)
// [url=home.php?mod=space&uid=467642]@namespace[/url] https://greasyfork.org/zh-CN/users/1344035-leng-y
// [url=home.php?mod=space&uid=1248337]@version[/url] 0.1
// [url=home.php?mod=space&uid=686208]@AuThor[/url] shunxing
// @description 稿定设计去水印,支持清屏和Canvas内容下载,2025年更新
// [url=home.php?mod=space&uid=195849]@match[/url] https://www.gaoding.com/editor/design?*
// @match https://www.focodesign.com/editor/design?*
// @match https://www.focodesign.com/editor/odyssey?template_id=*
// [url=home.php?mod=space&uid=609072]@grant[/url] unsafeWindow
// @downloadURL https://update.greasyfork.org/scripts/502420/%E7%A8%BF%E5%AE%9A%E8%AE%BE%E8%AE%A1%E5%8E%BB%E6%B0%B4%E5%8D%B018.user.js
// @updateURL https://update.greasyfork.org/scripts/502420/%E7%A8%BF%E5%AE%9A%E8%AE%BE%E8%AE%A1%E5%8E%BB%E6%B0%B4%E5%8D%B018.meta.js
// ==/UserScript==
(function() {
'use strict';
// 透明图片(用于替换水印)
const blockedImageReplacement = 'data:image/webp;base64,UklGRpYAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAIAAAAAAFZQOCAYAAAAMAEAnQEqAQABAA/A/iWkAANwAP7lagAAUFNBSU4AAAA4QklNA+0AAAAAABAASAAAAAEAAgBIAAAAAQACOEJJTQQoAAAAAAAMAAAAAj/wAAAAAAAAOEJJTQRDAAAAAAAOUGJlVwEQAAYAAAAAAAA=';
// 拦截并替换水印图片
function setupWatermarkRemoval() {
const originalSetSrc = Object.getOwnPropertyDescriptor(HTMLImageElement.prototype, 'src').set;
Object.defineProperty(HTMLImageElement.prototype, 'src', {
set(value) {
// 检测水印SVG特征
if (value.startsWith('data:image/svg+xml;base64') &&
value.includes('Cjxzdmcgd2lkdGg9IjMwMCIgaGVpZ2h0PSIyNTAi')) {
console.log('已拦截水印图片');
originalSetSrc.call(this, blockedImageReplacement);
return;
}
originalSetSrc.call(this, value);
},
});
console.log('水印拦截功能已启动');
}
// 初始化清屏功能
function initClearScreen(buttonContainer) {
// 创建清屏按钮
const clearBtn = document.createElement('button');
clearBtn.className = 'download-popover__primary gda-btn gda-btn-secondary custom-clear-screen-btn';
clearBtn.innerHTML = '<span>清屏</span>';
clearBtn.style.marginRight = '8px';
let isHidden = false;
clearBtn.addEventListener('click', () => {
const elementsToToggle = [
...document.querySelectorAll('.resource-station, .right-panel, .main__bottom, .dui-noob-guide-index')
];
if (!isHidden) {
// 隐藏元素
elementsToToggle.forEach(element => {
if (element) {
element.style.display = 'none';
}
});
clearBtn.querySelector('span').textContent = '恢复';
} else {
// 恢复显示
elementsToToggle.forEach(element => {
if (element) {
element.style.removeProperty('display');
}
});
clearBtn.querySelector('span').textContent = '清屏';
}
isHidden = !isHidden;
});
buttonContainer.appendChild(clearBtn);
}
// 初始化Canvas下载功能
function initCanvasDownload(buttonContainer) {
// 创建下载按钮
const downloadBtn = document.createElement('button');
downloadBtn.className = 'download-popover__primary gda-btn gda-btn-primary custom-download-btn';
downloadBtn.innerHTML = '<span>下载画布</span>';
downloadBtn.addEventListener('click', () => {
// 查找Canvas元素
const canvas = document.querySelector('.editor-stage .infinite-canvas');
if (!canvas) {
alert('未找到画布内容,请确保编辑器已完全加载');
return;
}
try {
// 显示加载状态
const originalText = downloadBtn.querySelector('span').textContent;
downloadBtn.querySelector('span').textContent = '处理中...';
downloadBtn.disabled = true;
// 延迟处理确保画布渲染完成
setTimeout(() => {
try {
// 获取Canvas数据并创建下载链接
const dataUrl = canvas.toDataURL('image/png');
const link = document.createElement('a');
link.href = dataUrl;
// 生成带时间戳的文件名
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
link.download = `稿定设计导出_${timestamp}.png`;
// 触发下载
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// 恢复按钮状态
setTimeout(() => {
downloadBtn.querySelector('span').textContent = originalText;
downloadBtn.disabled = false;
}, 800);
} catch (error) {
console.error('下载失败:', error);
alert('下载失败: ' + error.message);
downloadBtn.querySelector('span').textContent = originalText;
downloadBtn.disabled = false;
}
}, 600);
} catch (error) {
console.error('下载功能错误:', error);
alert('下载功能出现错误,请检查控制台');
downloadBtn.disabled = false;
}
});
buttonContainer.appendChild(downloadBtn);
}
// 等待页面加载完成后添加按钮
function setupCustomButtons() {
const checkInterval = 500;
const maxAttempts = 30; // 最多尝试15秒
let attempts = 0;
const intervalId = setInterval(() => {
attempts++;
const exportContainer = document.querySelector('.dc-header__export-actions');
if (exportContainer) {
clearInterval(intervalId);
// 创建按钮容器
const customBtnGroup = document.createElement('div');
customBtnGroup.className = 'gda-btn-group custom-actions-group';
customBtnGroup.style.marginRight = '12px';
// 添加功能按钮
initClearScreen(customBtnGroup);
initCanvasDownload(customBtnGroup);
// 将按钮组插入到页面
exportContainer.parentNode.insertBefore(customBtnGroup, exportContainer);
console.log('自定义功能按钮已添加');
} else if (attempts >= maxAttempts) {
clearInterval(intervalId);
console.warn('未找到导出按钮容器,无法添加自定义功能');
}
}, checkInterval);
}
// 启动所有功能
function init() {
setupWatermarkRemoval();
setupCustomButtons();
console.log('稿定设计增强工具已初始化');
}
// 页面加载完成后初始化
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();