tl/dr:如何转换 Uint8ClampedArray
使用rgba值而不使用 DOM
( canvas
元素)或 OffscreenCanvas
?
我正在寻找一种方法来转换 Uint8ClampedArray
对象(它保存rgba值)设置为有效的 Blob
物体或物体 Blob
url使用 URL.createObjectURL
对于由 blurhash
或 fast-blurhash
包,限制为不能使用 DOM
( canvas
等)或 OffscreenCanvas
.
这个 blurhash
库将“blurhash”转换为 Uint8ClampedArray
对象,保存rgba值,然后可用于渲染占位符图像;通常通过使用 canvas
元素。
在我的例子中,我想从 Uint8ClampedArray
未使用的对象 DOM
-相关职能或 OffscreenCanvas
.
有没有办法转换给定的 Uint8ClampedArray
使用将数据转换为可视图像 Blob
A. Blob
url或任何其他浏览器本机功能,而不使用 canvas
?
谢谢!
1条答案
按热度按时间velaa5lx1#
最好的方法是直接从imagebitmap转换为blob,但目前还没有(尽管bitmaprenderer画布与此非常接近)。
但是你可以自己编写一个png(或任何其他格式)编码器,或者使用互联网上已有的编码器(这里我将使用它)https://github.com/wheany/js-png-encoder 因为出于某些原因,它已经出现在我的浏览器历史记录中)。
然而,这可能不是一个好主意。就在这个片段中,我们在内存中复制了5次图像数据(2倍于原始像素数据,3倍于png),与本机libpng相比,我们用于进行所有转换的所有路径都非常慢。我不知道为什么您认为不能使用画布,但请注意,即使是node也有一个2d画布实现。