替换 PNG 文件中的颜色

Posted

技术标签:

【中文标题】替换 PNG 文件中的颜色【英文标题】:Replacing a color in PNG files 【发布时间】:2021-12-21 21:33:20 【问题描述】:

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

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

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

【问题讨论】:

那里有几十个链接到数百张图片,有些是洋红色背景的,有些是白色的,有些是透明的……你能说得更具体些吗? 嗯,图片在下载部分。那里的图像有一个洋红色的背景组。 【参考方案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);
    
)()

【讨论】:

以上是关于替换 PNG 文件中的颜色的主要内容,如果未能解决你的问题,请参考以下文章

png图片如何整体换颜色app

PHP - 替换图像中的颜色

ps如何把这个png换颜色

如何使用 CSS 替换 PNG 图像的颜色? [复制]

UIImage 的透明颜色为白色

使用python-pillow替换图片中的单一颜色