Julia → WebAssembly GC · no Julia runtime

JuliaImages filtering, running in your browser

ImageFiltering's imfilter on ImageCore's RGB{N0f8} pixels, compiled from Julia to WasmGC with WasmCodegen. Pick a kernel or type your own weights; every change re-filters the image in WebAssembly, with the package's own padding, separability test and color arithmetic.

Kernel weights of the correlation, centered

Sum–
Separable–
Passes–

Output

The call as the module runs it


    

Images drop an image here, or

Input –
imfilter –
imfilter–
Pixels out–
Native–
Module242 KB

Images are scaled to at most 512 pixels on a side.

Loading the module…

The packages, unchanged

ImageFiltering, ImageCore, ColorTypes, FixedPointNumbers and OffsetArrays from the General registry: 610 Julia functions in 242 KB of WebAssembly, with 358 objects (the presets' tables, the padding styles) serialized into the module.

Separable or not

imfilter factors a 2-D kernel by its singular value decomposition: of rank one, it filters with two 1-D passes. The SVD is LAPACK's gesdd, from the runtime WasmCodegen compiles into the module, written in Julia.

Checked against Julia

On 29 cases (every preset, each border, color and gray), the module's pixels equal native Julia's, or differ by one level where a sum lands on a rounding boundary: the SVD's last bits differ from OpenBLAS's.