Chrome 50 中添加了对 Canvas toBlob() 的支持

Paul Lewis

从 Chrome 50 开始,画布元素即将进行升级:它现在支持 toBlob() 方法!对于在客户端生成图像,希望(比如说)将图片上传到其服务器或将其存储在 IndexedDB 中以供日后使用的人来说,这无疑是一个好消息。

function sendImageToServer (canvas, url) {

    function onBlob (blob) {
    var request = new XMLHttpRequest();
    request.open('POST', url);
    request.onload = function (evt) {
        // Blob sent to server.
    }

    request.send(blob);
    }

    canvas.toBlob(onBlob);
}

使用 toBlob() 非常实用,因为您现在可以直接处理编码的二进制数据,而无需处理从 toDataURL() 获取的 base64 编码字符串。它比数据 URI 更小,而且往往适合更多用例。

如果您想知道是否可以将图像 blob 绘制到其他画布上下文,那么答案在 Firefox 和 Chrome 中是肯定的!您可以使用 createImageBitmap() API 执行此操作,该 API 也已登陆 Chrome 50。