我不认为 Fabric.js 是这里的罪魁祸首,因为当我添加时间警报时,它只需要 2-3 秒。但是,这是它使用的代码:
applyTo: function(canvasEl) {
var context = canvasEl.getContext('2d'),
imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height),
data = imageData.data,
len = imageData.width * imageData.height * 4,
index = 0,
average;
while (index < len) {
average = (data[index] + data[index + 1] + data[index + 2]) / 3;
data[index] = average;
data[index + 1] = average;
data[index + 2] = average;
index += 4;
}
context.putImageData(imageData, 0, 0);
},
因此,如果不是罪犯,那么罪犯就是putImageData
功能。
有什么方法可以增加/优化该功能,使其在不到 15 秒的时间内处理 5000x5000 图像?
如果没有,有没有办法设置一个“工作”图标,只有在 putImageData 通过 jQuery 完成后才会被删除,因为目前,它会在 2 秒后被删除,因为 Fabric.js 代码完成得更快?