从 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。