在Web Worker中使用OffscreenCanvas.convertToBlob方法大文件时浏览器崩溃

时间:2019-06-16 06:22:55

标签: javascript web worker

我试图在浏览器中显示Tiff文件,我使用UTIF.js文件成功读取了Tiff,在这里我使用Web Worker读取了Tiff格式文件。有些文件非常大,例如10,000 px高和13,000宽,我需要在浏览器中显示它们。执行代码返回Promise对象的OffscreenCanvas.convertToBlob方法时,浏览器崩溃。

这是我使用Web Worker和Offscreencanvas的地方,我尝试使用具有不同参数(例如质量.6或更低)的convertToBlob方法,但浏览器仍然崩溃。

UTIF.decodeImage(ubuf,utif[k]);
var ubuf1 =UTIF.toRGBA8(utif[k]);
var a =  new Uint8ClampedArray(ubuf1);
var imgData = new ImageData(a,utif[k].width,utif[k].height);
var canvas1 = new OffscreenCanvas(utif[k].width,utif[k].height);
var ctx = canvas1.getContext('2d');
ctx.putImageData(imgData,0,0);
var that = self;
if(utif[k].width >2048) {
canvas1.convertToBlob({type : "image/jpeg",
quality : 0.3
}).then(function(blob) {
that.postMessage(blob);                   
});
}
else {
canvas1.convertToBlob(
{type : "image/jpeg",
quality : 1
}).then(function(blob) {
that.postMessage(blob);                   
});
}

我希望浏览器在大文件情况下不会崩溃。

先行考虑

0 个答案:

没有答案