改变canvas生成的图片中文本颜色

简介: 改变canvas生成的图片中文本颜色

一、将canvas画布生成图片

获取canvas,通过canvas.toDataURL('image/png', 1)直接可以将画布转换成base64图片

二、canvas书写的时候是一个颜色,书写完生成图片的时候,图片中的文本字体变成另一个颜色,如何处理?

可以通过设置canvas.getContext('2d').globalCompositeOperation的值来实现

具体方法如下:

书写中画布的文本颜色设置:

this.canvas = canvas;
this.context = canvas.getContext('2d');
context.strokeStyle = '#F2D49F';

生成图片之前通过canvas.getContext('2d').globalCompositeOperation = "source-in" 来改变颜色(https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation)

async getPNGImage(canvas = this.canvas) {
    const w = canvas.width;
    const h = canvas.height;
    let ctx = canvas.getContext('2d');
    // 设置canvas生成的图片中文本的颜色
    ctx.globalCompositeOperation = 'source-in';
    ctx.fillStyle = "#0710B2";
    ctx.fillRect(0, 0, w, h);
    // 签名生成图片后颜色恢复到原始颜色,画布中颜色不变
    setTimeout(() => {
      ctx.globalCompositeOperation = 'source-in';
      ctx.fillStyle = "#F2D49F";
      ctx.fillRect(0, 0, w, h);
    })
    return canvas.toDataURL('image/png', 1)
}

通过以上的操作可以实现的是:

比如有一个canvas画布,书写的时候,字体颜色设置成白色,这时候canvas画布上都是白色的字体,然后需要将canvas画布书写的内容生成一张透明的png图片,这张图片因为要放到其他地方去展示,所以可能需要改一下图片上的文字颜色。所以就用到了我们的globalCompositeOperation,需要手动设置。在生成图片之前设置一下,生成的图片就会是我们上面预期的效果


相关文章
|
9月前
|
前端开发 计算机视觉 开发者
利用CSS改变图片颜色的100种方法!
利用CSS改变图片颜色的100种方法!
208 1
|
4月前
|
前端开发 容器
改变文本颜色
【10月更文挑战第18天】
37 8
|
6月前
在图片上的文字背景,颜色是黑色?
在图片上的文字背景,颜色是黑色?
37 0
在图片上的文字背景,颜色是黑色?
|
7月前
|
前端开发
如何在页面中画一个canvas,然后在居中位置写上蓝色‘Hello Canvas‘,并加上文字描边 * @type {HTMLElement}
如何在页面中画一个canvas,然后在居中位置写上蓝色‘Hello Canvas‘,并加上文字描边 * @type {HTMLElement}
|
9月前
如何实现图片多种颜色的文字混排并且带的背景颜色范围比文字图片范围大
如何实现图片多种颜色的文字混排并且带的背景颜色范围比文字图片范围大
54 1
|
8月前
img图片/svg图标与文字无法对齐
img图片/svg图标与文字无法对齐
88 0
|
9月前
|
前端开发
canvas详解04-绘制文字
canvas详解04-绘制文字
106 2
canvas详解04-绘制文字
|
9月前
|
前端开发
canvas实现动态替换人物的背景颜色
canvas实现动态替换人物的背景颜色
CSS3文本居中显示、圆形圆角绘制、立体阴影效果设置实例演示
CSS3文本居中显示、圆形圆角绘制、立体阴影效果设置实例演示
162 0
|
前端开发 JavaScript
NaiveUI中看起来没啥用的组件(文字渐变)实现原来这么简单
用不到80行代码复原了NaiveUI中的渐变文字组件,内容不多,非常简单,小小娱乐一次。。。。。。。
402 0

热门文章

最新文章