有没有办法在Webassembly代码中对图像进行编码?
因此,与其将图像加载到用Wasm绘制的画布中,不如将图像加载到代码中。
类似于使用base64图像的方法,但是在已编译的wasm代码中,而不是在base64中,我们可以将其加载到新选项卡中,然后将其另存为图像。
也许做像逐像素绘制之类的事情。 但是,限制之一是下载速度不能太大。
答案 0 :(得分:1)
因此,为了澄清您的问题,您似乎想在wasm上使用图像文件,但又不想由于wasm二进制编码而对二进制大小产生影响。
在这种情况下,为什么不将它们打包为单独的文件,然后将其传递给wasm? Emscripten提供了a virtual file system,它支持pre-loading files。
假设您的图片文件为your_image.png
,可以通过添加--preload-file
选项来赋予emcc您可以发货。作为wasm二进制文件之外的打包文件。例如:
$ emcc \
your_source_file.cpp \
--preload-file your_asset_dir/your_image.png \
...other emcc options...
将创建包含.bin
的{{1}}文件(以及添加的其他文件)以及已编译的your_image.png
,.wasm
文件。这个.js
文件应该比在C上对二进制文件进行硬编码要节省更多空间。您的wasm(精确地,加载wasm模块的JS文件)将在运行时下载.bin
文件
您可以像在本地文件系统上的普通文件一样打开文件:
.bin
有关此功能的更多详细信息,请访问Emscripten的tutorial。