画布和背景作为图像

时间:2018-04-26 15:13:33

标签: javascript canvas

我试图建立一个页面,用户可以自定义画布,然后将完成的项目通过电子邮件发送给自己。我使用以下javascript设置画布的背景:

const child_process = require("child_process");
const os = require("os");

.
.
.

//Problem code below

let flywayMigrate = function(dbpassword){
  return new Promise(function(){
    let child = child_process.spawn(                              
      "./flyway",                                      
      ["migrate"],                                     
      {                                                
        cwd : "/home/admin/flyway"                     
      }
    );
    child.stdout.on("data", function(data){
      let out = data.toString();
      console.log(out);
      //containsString(haystack, needle) being a utility method
      if(containsString(out, "Database password:")){
        child.stdin.write(dbpassword);
        child.stdin.write(os.EOL);
      }
    });
    child.stderr.on("data",function(data){
      console.log(data.toString());
      reject();
    });
    child.on("exit", function(){
      console.log("child process finished");
      resolve();
    });
  });
}

并在页面上包含一个表单以填充画布的其余部分。我已经尝试了各种方法来包含canvas.toDataURL(),以便将画布保存为稍后可以通过电子邮件发送给它们的图像,但背景图像不是保存图像的一部分。 (与Canvas to Save Image and Email类似的问题,但我的文字不会保存我的图像)

我一直在尝试各种变化,但它不适合我。

function setbackground1() {
  document.getElementById('myCanvas').setAttribute("class", 
 "background1");
}
function setbackground2() {
  document.getElementById('myCanvas').setAttribute("class", 
 "background2");
}

我相信我不得不同时引用myCanvas id

  function setbackground11() {

    var img = new Image();
    img.src = 'background1.jpg';
    img.onload = function () {
      ctx.fillRect( 0, 0, canvas.width, canvas.height )
    }
}

1 个答案:

答案 0 :(得分:0)

CSS样式不是画布图像的一部分。对于纯色:

ctx.fillStyle = 'green'
ctx.fillRect( 0, 0, canvas.width, canvas.height )

对于图像:

var img = new Image();
img.src = 'background1.jpg';
img.onload = function () {
    ctx.drawImage( img, 0, 0, canvas.width, canvas.height )
    // do the rest of your drawing over the background
}