canvas画图之后保存结果是黑色的

用画布实现一个网页画图工具,画完了图之后:
绘制方法:

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是黑色的呢

阅读 4.8k
1 个回答

是不是因为 png 支持存在透明区域,而 jpg 格式会自动将透明区域填充上颜色,是不是这个原因呢?

你试着画之前这样操作一下:

ctx.beginPath();
ctx.rect(0, 0, w, h);
ctx.closePath();
ctx.fillStyle = "#fff";
ctx.fill();

再导出,看看是不是不会给你填充上黑色呢。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题