首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Jimp中更改文本打印的字体颜色

如何在Jimp中更改文本打印的字体颜色
EN

Stack Overflow用户
提问于 2022-02-21 21:17:25
回答 1查看 1.2K关注 0票数 0

JIMP使用位图字体..。他们似乎没有选择来设置颜色。

我想将字体的颜色更改为任意颜色,然后在基本背景图像上覆盖此水印文本。

我可以加载图像并将文本放在上面,如下所示:

代码语言:javascript
运行
复制
Jimp.read('testImage.jpg', (err, baseImage) => {
    if (err) throw err;

    Jimp.loadFont(Jimp.FONT_SANS_32_BLACK).then(font => {
        baseImage.print(font, 0, 0, "My Text")
        baseImage.write('testOutput.jpg'); // save
    });

});

但是,改变JIMP字体的颜色似乎并不明显。

EN

回答 1

Stack Overflow用户

发布于 2022-02-21 21:22:32

解决了这个问题。

它利用创建透明图像的优势,将黑色文本放在该图像上,然后使用xor操作有效地“着色”黑色文本。你把那个新颜色的文本层放到原始的基本图像上.

请参见:

代码语言:javascript
运行
复制
Jimp.read('testImage.jpg', (err, baseImage) => {
    if (err) throw err;

    let textImage = new Jimp(1000,1000, 0x0, (err, textImage) => {  
        //((0x0 = 0 = rgba(0, 0, 0, 0)) = transparent)
        if (err) throw err;
    })


    Jimp.loadFont(Jimp.FONT_SANS_32_BLACK).then(font => {
        textImage.print(font, 0, 0, "My Text")
        textImage.color([{ apply: 'xor', params: [#00ff00] }]); 
        image.blit(textImage, 0, 0)
        image.write('testOutput.jpg'); // save
    });
});

Net结果: testOutput.jpg看起来像testImage.jpg,但是蓝色文本在上面写着"My“。

我相信您也可以缩小创建的'textImage‘的大小,但为了改变颜色的插图目的,硬编码它作为1000x1000的工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71213136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档