HEIC encoder for the browser Paint tool libheif v1.23.4 (4e14f5942c1732ace9611b9522cc991501445463) https://github.com/strukturag/libheif License: LGPL-3.0; see LICENSE-libheif.txt. Kvazaar v2.3.2 (6040962bed5cc68c5ad01234c38c08b8b2822068) https://github.com/ultravideo/kvazaar License: BSD-3-Clause; see LICENSE-kvazaar.txt. Built with Emscripten 5.0.6, CMake 4.4.4 and Ninja 1.13.2 on Windows. Only the Kvazaar HEVC encoder is enabled. Decoding remains in ../libheif/. No upstream tracked source modifications. The local C++ bridge is encoder.cpp. Each export runs in a disposable module Worker; no shared-memory headers needed. RGBA input, quality 92, YCbCr 4:2:0, sRGB profile, alpha auxiliary image. HEIC is lossy; exact RGB/alpha preservation for all content is not promised. Corresponding source is provided beside this file: libheif-source.tar.gz, kvazaar-source.tar.gz, encoder.cpp, build.ps1 These source copies and build script may be used to modify/relink the module. Place the library sources under .repos/libheif and .repos/kvazaar at the project root (the script checks the pinned Git revisions), and the bridge/build script under scripts/wasm/heic. Alternatively clone the pinned tags from the URLs above. Set up a local Emscripten 5.0.6 SDK under .repos/emsdk and activate it; install cmake==4.4.4 and ninja==1.13.2 in a Python venv at .repos/heic-build-tools. Run: pwsh -File scripts/wasm/heic/build.ps1 For modified sources, remove/update the source revision and clean-tree guards, and include your changes in the corresponding source archives when distributing. The application loads heic-encoder.js and heic-encoder.wasm from this directory; replace both together with compatible exports to use your rebuilt library.