ColorSpace配色结果保存为MATLAB元胞

键盘按任意键即可执行。

// ==UserScript==
// @name         ColorSpace配色结果保存为MATLAB元胞
// @namespace    plusv
// @version      1.1
// @description  键盘按任意键即可执行。
// @match        https://mycolor.space/?hex=*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    let isKeyDown = false; // 标记是否按下了任意键
    document.addEventListener('keydown', function(event) {
        if (!isKeyDown) {
            isKeyDown = true; // 标记已按下任意键,避免重复执行
            const palettes = document.querySelectorAll('.color-palette');
            let output = '';
            let rowIndex = 1; // 行索引
            palettes.forEach(palette => {
                const colorBoxes = palette.querySelectorAll('.color-box');
                const colors = []; // 存储颜色值的数组
                colorBoxes.forEach(colorBox => {
                    const value = colorBox.querySelector('.name').value;
                    const rgbValue = hexToRgb(value); // 将颜色值转换为 RGB 格式
                    const r = rgbValue[0];
                    const g = rgbValue[1];
                    const b = rgbValue[2];
                    colors.push(`${r}, ${g}, ${b}`); // 把 RGB 格式的颜色值添加到数组中
                });
                output += `Clist{${rowIndex}}=[${colors.join('; ')}];\n`; // 把颜色值数组转换为 MATLAB 矩阵格式,并添加到输出字符串中
                rowIndex++; // 更新行索引
            });

            // 创建一个 Blob 对象,用于保存输出结果
            const blob = new Blob([output], { type: 'text/plain' });

            // 创建一个链接,用于下载保存的文件
            const link = document.createElement('a');
            link.href = window.URL.createObjectURL(blob);
            link.download = 'PlusVColor.txt';

            // 模拟点击链接来下载文件
            link.click();

            // 将十六进制颜色值转换为 RGB 格式的函数
            function hexToRgb(hex) {
                const r = parseInt(hex.slice(1, 3), 16);
                const g = parseInt(hex.slice(3, 5), 16);
                const b = parseInt(hex.slice(5, 7), 16);
                return [r, g, b];
            }
        }
    });
    document.addEventListener('keyup', function(event) {
        isKeyDown = false; // 标记按键已松开,可以再次执行
    });
})();