javascript - 为透明图像添加背景

标签 javascript php css html canvas

我需要将在 Canvas 中创建的图表导出为图像文件。我设法做到了,但图像是透明的(没有背景)。我的问题是,有没有一种方法可以使用代码为我从 Canvas 获得的现有图像添加背景颜色?

例子:

浏览器中的 Canvas : enter image description here

导出为 .png 时的 Canvas :

enter image description here

最佳答案

您可以通过多种方式完成任务。

到目前为止,最简单的方法是在开始绘制图表之前用背景色填充整个 Canvas 。 提示:您不显示代码,但如果可能,请执行此简单的解决方案。 ;=)

context.fillStyle='white';
context.fillRect(0,0,canvas.width,canvas.height)

如果您无法在开始前填写,您仍然有一些选择。

您可以将图表保存到另一个 Canvas ,用背景颜色填充整个主 Canvas ,然后将保存的图表重新绘制回主 Canvas 。

// create a second canvas and draw the chart onto it
var secondCanvas=document.createElement('canvas');
var cctx=secondCanvas.getContext('2d');
secondCanvas.width=canvas.width;
secondCanvas.height=canvas.height;
cctx.drawImage(mainCanvas,0,0);

// fill the main canvas with a background
context.fillStyle='white';
context.fillRect(0,0,canvas.width,canvas.height)

// redraw the saved chart back to the main canvas
context.drawImage(secondCanvas,0,0);

您可以使用合成在现有像素后面绘制新绘图。绘制整个背景,它将出现在现有图表的后面。

// set compositing to draw all new pixels (background) UNDER
// the existing chart pixels
context.globalCompositeOperation='destination-over';

// fill the main canvas with a background
context.fillStyle='white';
context.fillRect(0,0,canvas.width,canvas.height)

// always clean up ... reset compositing to default
context.globalCompositeOperation='source-over';

关于javascript - 为透明图像添加背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849573/

相关文章:

javascript - jQuery 或 Ajax 仪表

javascript - 让 DOM 模板在 VueJS 2.0 中工作的确切要求是什么?

javascript - 简单模式 iframe 动画

javascript - IE7 不加载 javascript 文件

html - 如何使用过渡 CSS 缩放图像?

javascript - 使简单的 js fiddle 动画在按钮单击而不是页面加载时开始。

javascript - 从 react native 退出上传照片时出现未处理的错误

php - Laravel 架构生成器 |独特的、区分大小写的列

php - 如何使用PHP使用GAE将图像上传到谷歌云存储

php - 在表中存储用户的统计信息。我应该使用这两种方法中的哪一种?