【发布时间】:2020-01-12 14:32:36
【问题描述】:
我正在创建一个网页,该网页生成在线 svg 图像,然后允许用户以各种格式下载它们。 (png,jpg,jpeg,svg) 我有一个导出功能,可以将图像从内联 svg 转换为画布,然后将画布转换为 dataURL 以供下载。当我尝试使用 Chrome 导出时,由于 Chrome 的数据上限,将较大的图像(7,000x10,000 像素)缩小到画布需要时间。 (FF 没有任何问题,可以在很短的时间内缩小大量图像,而 chrome 可以)
当图像需要一段时间才能从画布中填充和下载时,我需要创建一个加载进度条。我尝试了this answer 中的解决方案无济于事,因为我使用的是从 svg blob 而不是服务器上的图像文件创建的 objectURL。
在使用 objectURL 设置图像 src 时,有没有办法查看图像加载的进度。
canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d',{alpha:false});
// creates a new blank image
var img = new Image();
// encode the svg to a string
var data = (new XMLSerializer()).serializeToString(svg);
// creates a blob from the encoded svg
var svgBlob = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
// creates an object url for the download
var url = DOMURL.createObjectURL(svgBlob);
// when the image is done being created and its loaded
img.onload = function(){ /* drawImage to canvas and save as dataURL*/ }
// load the image src using the objectURL
img.src = url;
当url是objectURL而不是图像文件时,有没有办法读取图像加载的进度?
【问题讨论】:
标签: javascript svg canvas dom-events