javascript - 在 for 循环中等待 image.onload
问题描述
我正在尝试将 base64 编码的 PNG 数组(通过require()
文件资产导入)转换为 RGBA 数组。我正在使用的方法是将 base64 字符串写入图像元素并从getImageData()
图像的上下文中读取数据。
但是,我对image.onload
事件侦听器和 Promises 以及 for 循环之间的交互感到非常困惑。
async function afterImageLoad(src) {
return new Promise((resolve, reject) => {
const signCanvas = document.createElement('canvas');
const signContext = signCanvas.getContext("2d")
const signImage = new Image(108, 108);
signImage.onload = async () => {
signImage.decode().then(() => {
resolve(signContext.getImageData(0, 0, 108, 108));
})
}
signImage.src = src;
})
}
for (let i = 0; i < this.table.length; i++) {
let signImageSrc = this.table[i].imageURL; // The base64 string
let signImageData = await afterImageLoad(signImageSrc) // I want the for-loop to pause here
let diff = pixelmatch(
drawingPixelData.data,
signImageData.data,
diffContext.data,
108,
108,
); // right now this is always 0, because the signImageData is not loaded.
解决方案
推荐阅读
- macos - 如何在 mac 中通过 cli 设置默认钥匙串?
- mysql - MySQL关于在运算符之间使用的问题
- objective-c - [NSString stringWithUTF8String:] 中的 macOS 奇怪崩溃
- python - 导入嵌套模块时出现 ModuleNotFoundError
- java - 如何配置 Spring Cloud 日志记录?
- python - 如何使用python根据源文件夹将所有csv文件从不同的源文件夹复制到目标中?
- python - 在 Flask REST API Python 中显示数据列表
- sql - 如何在 oracle 中使用 regexp_like 进行通配符搜索?
- r - distill rmarkdown 中用于嵌入基于 HTML 的调查的 YAML 设置
- python - 我如何在 discord.py 中获得角色的名称