gpt4 book ai didi

javascript - canvas.toBlob() 仍然无法处理 Chrome ......解决方法?

转载 作者:行者123 更新时间:2023-11-28 01:37:52 25 4
gpt4 key购买 nike

我在应用程序上使用 canvas.toBlob() 函数。在 Firefox 上运行良好。

当使用 chromium 时,该功能失败。

我发现了这个问题: Which browsers (and versions) support the Canvas.toBlob method?

解决此问题并要求浏览器支持此功能,但它已经过时了。

今天是什么状态? chromium 是唯一一个还是其他浏览器仍然不支持它?

但最重要的是……我可以使用任何解决方法吗???我的客户正在使用 Chromium 来测试应用程序...

最佳答案

好吧,toBlob() 仍然受到支持。 Chromium 上的原始受让人似乎不活跃,并且该问题目前似乎尚未重新分配(请参阅帖子中的 link)。

解决方法是使用 polyfill/shim,例如 this one .

来自上面同一链接的代码列出了这段代码(引用条目 #57,由 Adria 提供):

if( !HTMLCanvasElement.prototype.toBlob ) {
Object.defineProperty( HTMLCanvasElement.prototype, 'toBlob', {
value: function( callback, type, quality ) {
const bin = atob( this.toDataURL( type, quality ).split(',')[1] ),
len = bin.length,
len32 = len >> 2,
a8 = new Uint8Array( len ),
a32 = new Uint32Array( a8.buffer, 0, len32 );

for( var i=0, j=0; i < len32; i++ ) {
a32[i] = bin.charCodeAt(j++) |
bin.charCodeAt(j++) << 8 |
bin.charCodeAt(j++) << 16 |
bin.charCodeAt(j++) << 24;
}

let tailLength = len & 3;

while( tailLength-- ) {
a8[ j ] = bin.charCodeAt(j++);
}

callback( new Blob( [a8], {'type': type || 'image/png'} ) );
}
});
}

(在使用 ECMAScript 的浏览器中,您可能必须将 constlet 替换为 var)。

关于javascript - canvas.toBlob() 仍然无法处理 Chrome ......解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com