JIMP使用位图字体..。他们似乎没有选择来设置颜色。
我想将字体的颜色更改为任意颜色,然后在基本背景图像上覆盖此水印文本。
我可以加载图像并将文本放在上面,如下所示:
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字体的颜色似乎并不明显。
发布于 2022-02-21 21:22:32
解决了这个问题。
它利用创建透明图像的优势,将黑色文本放在该图像上,然后使用xor操作有效地“着色”黑色文本。你把那个新颜色的文本层放到原始的基本图像上.
请参见:
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的工作。
https://stackoverflow.com/questions/71213136
复制相似问题