vueベースのcanvas図面をローカルにダウンロード
2199 ワード
canvas図面の基本手順
html canvasラベルキャンバスを作成する
canvasの幅は必ず書きます.彼がデフォルトの幅300*150を設定しないと、絵を描くときに変形します.
js canvasキャンバスにデータを描く
これで画像を生成できますが、絵のcanvasと生成された画像が少しぼやけてしまい、次の文章で解決策を書く場合もあります
html canvasラベルキャンバスを作成する
canvasの幅は必ず書きます.彼がデフォルトの幅300*150を設定しないと、絵を描くときに変形します.
js canvasキャンバスにデータを描く
let myCanvas = this.$refs.myCanvas
//
let Cwidth = 500
let CHeight = 500
//
var ctx = myCanvas.getContext('2d')
// ,canvas ,
// , 100%
// -
ctx.fillStyle = '#fff'
ctx.fillRect(0, 0, Cwidth, CHeight);
// rgba
ctx.fillStyle = 'rgba(0,0,0,0.9)'
// (x, y, width, height)
ctx.strokeRect(50, 100, 100, 100)
//
ctx.fillStyle = '#333'
// - , -
ctx.font = '16px Arial'
ctx.fillText(' ', 50, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect(200, 30, 80, 50);
//
//
//
// let imgObj = new Image()
// imgObj.src = 'http://img4.imgtn.bdimg.com/it/u=3704809141,1787261659&fm=11&gp=0.jpg'
// let imgUrl = await this.imgOnload(imgObj)
// ctx.drawImage(imgUrl, 250, 200, 150, 150)
// ,, , ,
//
// ( )
let imageUrl = myCanvas.toDataURL("image/png", 0.5);
// base64
// , , , , a
// , base64 ,
this.downloadFile(imageUrl, '1.png')
// - -
imgOnload(img) {
return new Promise(resolve => {
img.onload = function () {
resolve(this)
}
})
}
//
downloadFile(data, filename) {
// URI
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
//
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
},
これで画像を生成できますが、絵のcanvasと生成された画像が少しぼやけてしまい、次の文章で解決策を書く場合もあります