我在Deno上使用TypeScript.我试着用blurhash.

这是我的代码:

const response = await fetch(url);
if (!response.body) {
throw new Error("Body null");
}

const clamped = new Uint8ClampedArray(await response.arrayBuffer());
var blurhash: string = encode(clamped, width, height, 4, 4,);

其中widthheight是预先知道的.但我得到了这样的错误:

Width and height must match the pixels array

我读到这个issue,它似乎缺少Alpha通道之类的东西.问题是,所有的解决方案都通过使用sharpensureAlpha()来修复它.但是sharp不是在Deno上运行的,所以我不能使用它.

有人知道我该怎么解决吗?

推荐答案

您正在使用的blurhash库需要一个格式为[R, G, B, A]的原始位图像素的Uint8Array.在这里,你将整个png文件,包括它的头,它的元数据和压缩的像素数据.

您将需要实际读取该图像文件,以便访问该原始位图数据.有各种库可以做到这一点,我让你 Select 一个,但不幸的是,deno需要CSP规则,我们在StackSnief这里没有,所以我不能做一个现场演示.

import * as blurhash from "https://esm.sh/blurhash";
// Or any other library
import decode from "https://deno.land/x/wasm_image_decoder@v0.0.7/mod.js";

const response = await fetch(url);
if (!response.body) {
  throw new Error("Body null");
}
const fileBuffer = await response.arrayBuffer();
const { data, width, height } = await decode(fileBuffer);
const hash = encode(data, width, height, 4, 4,);
console.log(hash);

Javascript相关问答推荐

ReactJS中的material UI自动完成类别

我在这个黑暗模式按钮上做错了什么?

在这种情况下,如何 for each 元素添加id?

构造HTML表单以使用表单数据创建对象数组

保持物品顺序的可变大小物品分配到平衡组的算法

这个值总是返回未定义的-Reaction

当使用';字母而不是与';var#39;一起使用时,访问窗口为什么返回未定义的?

在forEach循环中获取目标而不是父对象的属性

使用VUE和SCSS的数字滚动动画(&;内容生成)

如何使用JS创建一个明暗功能按钮?

如何使用基于promise (非事件emits 器)的方法来传输数据?

打字脚本中方括号符号属性访问和拾取实用程序的区别

无法检索与Puppeteer的蒸汽游戏的Bundle 包价格

如何根据输入数量正确显示alert ?

自动滚动功能在当前图像左侧显示上一张图像的一部分

JavaScript -复制到剪贴板在Windows计算机上无效

ComponentWillReceiveProps仍在React 18.2.0中工作

使用python,我如何判断一个html复选框是否被隐藏,以及它是否被S选中?

当一条路由在Reaction路由中命中时,如何有条件地渲染两个组件或更改两个插座?

Node.js的Fetch()调用总是创建新的Express会话