用画布实现一个网页画图工具,画完了图之后:
绘制方法:
let board = document.getElementById('drawingBoard');
let ctx = board.getContext('2d');
let lastX, lastY;
const t = this;
board.onmousedown = function (ev) {
lastX = ev.offsetX;
lastY = ev.offsetY;
board.onmousemove = function (ev) {
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(ev.offsetX, ev.offsetY);
lastX = ev.offsetX;
lastY = ev.offsetY;
ctx.lineWidth = t.colorBoardData.thickness;
ctx.strokeStyle = t.colorBoardData.color;
ctx.stroke();
};
board.onmouseup = function () {
board.onmousemove = null;
board.onmouseup = null;
}
}
保存图片方法:
const div = document.getElementById('drawingBoard');
const result = div.toDataURL('image/jpeg');
console.log(result);
这个result打印出来是一串base64,但是浏览器上打开却是一张黑色的图,是为什么呢,画布没有引入跨域图片,是纯手画的图然后保存绘制结果
刚刚试了下保存为png就没问题,但是为什么jpg是黑色的呢
是不是因为 png 支持存在透明区域,而 jpg 格式会自动将透明区域填充上颜色,是不是这个原因呢?
你试着画之前这样操作一下:
再导出,看看是不是不会给你填充上黑色呢。