【问题标题】:Replacing a color in PNG files替换 PNG 文件中的颜色
【发布时间】:2023-04-10 13:40:01
【问题描述】:

我在 http://pousse.rapiere.free.fr/tome/ 找到了一个包含地牢游戏 PNG 文件的库。

但是,图块的背景不是“透明”的,而是“#ff00ff”或白色的。

如何用 rgba(0,0,0,0) 轻松替换颜色?我可以将图像加载到 HTML5 画布中并替换那里的颜色,但也许有更简单的方法?

【问题讨论】:

  • 那里有几十个链接到数百张图片,有些是洋红色背景的,有些是白色的,有些是透明的……你能说得更具体些吗?
  • 嗯,图片在下载部分。那里的图像有一个洋红色的背景组。

标签: javascript replace colors png


【解决方案1】:

好吧,我刚刚找到了replace-color 函数,并编写了一个更新文件夹中所有PNG文件的工具:

const fs = require('fs');
const path = require('path');
const replaceColor = require('replace-color');

function findPngFiles(dir) {
    var files = fs.readdirSync(dir);
    var pngFiles = [];
    for (let file of files) {
        file = path.join(dir, file);
        if (path.extname(file).toLowerCase() === '.png') {
            pngFiles.push(file);
        }
        if (fs.statSync(file).isDirectory()) {
            pngFiles = pngFiles.concat(findPngFiles(file));
        }
    }
    return pngFiles;
}

async function updateImage(file) {
    replaceColor({
        image: file,
        colors: {
            type: 'hex',
            targetColor: '#FF00FF',
            replaceColor: '#00000000'
        }
    })
        .then((jimpObject) => {
            jimpObject.write(file, (err) => {
                if (err) return console.log(err);
            });
        })
        .catch((err) => {
            console.log(err);
        });
}

const pngFiles = findPngFiles('./Items');

(async function updateFiles() {
    for(let file of pngFiles) {
        await updateImage(file);
        console.log(file);
    }
})()

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2017-02-17
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2016-04-30
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多