如何在像base64

时间:2018-12-21 06:57:34

标签: webassembly

有没有办法在Webassembly代码中对图像进行编码?

因此,与其将图像加载到用Wasm绘制的画布中,不如将图像加载到代码中。

类似于使用base64图像的方法,但是在已编译的wasm代码中,而不是在base64中,我们可以将其加载到新选项卡中,然后将其另存为图像。

也许做像逐像素绘制之类的事情。 但是,限制之一是下载速度不能太大。

1 个答案:

答案 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