Open-source licenties

Laatst bijgewerkt: 26 september 2026

Het converteren van een HEIC-foto gebeurt hier in je eigen browser, en je foto wordt er niet voor geΓΌpload. Hiervoor downloadt je browser een klein open-source programma dat HEIC leest. Deze pagina geeft de licentie, waar de broncode is, en hoe je het kunt herbouwen of vervangen.

Kortom: de decoder is gelicentieerd onder de LGPL-3.0, wij hebben deze niet gewijzigd, je kunt de broncode waarvan we denken dat de decoder ermee is gebouwd, van deze site downloaden (hieronder vermelden we wat we wel en niet hebben geverifieerd), en je bent vrij om deze voor eigen gebruik te wijzigen, te vervangen en reverse-engineering toe te passen.

Wat wij naar je browser sturen

Bestanden en licentieteksten

De bibliotheek wordt geleverd als afzonderlijke bestanden, precies zoals de auteurs deze in het npm-pakket hebben gepubliceerd (we hebben niets gewijzigd, en de bestanden zijn niet samengevoegd tot een ander script):

SHA-256 van de twee binaire bestanden:

Broncode, hier gehost

De volledige bijbehorende broncode wordt op deze site bewaard, zodat je niet afhankelijk bent van GitHub. GitHub neemt geen submodules op in zijn archieven, daarom zijn libheif en libde265 aparte bestanden. Elk bestand hieronder is het archief zoals GitHub het levert voor de getoonde tag of commit.

Dezelfde bronnen op GitHub: libheif-js (tag 1.23.2), libheif-emscripten (tag v1.23.2), libheif (commit ac1cb05) en libde265 (tag v1.0.15). Het pakket is ook te vinden op npm (sha1 185691289ccfefe813e4b7f84ac4f84f24abb064). We hebben er geen wijzigingen aan aangebracht.

Bouw het zelf

Deze stappen komen uit de build-workflow van libheif-emscripten v1.23.2 (.github/workflows/emscripten.yml, de "wasm"-target). We hebben ze gekopieerd uit de repository en zelf niet uitgevoerd. Je hebt een schone Ubuntu 22.04 machine nodig (het installatiescript voert sudo apt-get uit en installeert en verwijdert pakketten), Node.js 24, git, curl, cmake, make en een C++ toolchain.

git clone https://github.com/catdad-experiments/libheif-emscripten
cd libheif-emscripten
git checkout v1.23.2
git submodule update --init --recursive   # libheif at ac1cb05c39008f01525c991ff8b88f84ddf70fd2

npm install -g typescript@5
export EMSCRIPTEN_VERSION=3.1.61
cd libheif
./scripts/install-ci-linux.sh             # installs Emscripten 3.1.61
./scripts/prepare-ci.sh
sed -e 's/USE_WASM=0/USE_WASM=1 USE_UNSAFE_EVAL=0/g' -e 's/USE_TYPESCRIPT=0/USE_TYPESCRIPT=1/g' \
    ./scripts/run-ci.sh > ./scripts/run-ci-wasm.sh
chmod +x ./scripts/run-ci-wasm.sh
./scripts/run-ci-wasm.sh                  # also downloads and builds libde265 1.0.15
cd ..
./dist-prep.sh wasm                       # result: dist/libheif.js, dist/libheif.wasm

haalt dan het .js bestand via esbuild (minify, target es2019) met zijn scripts/install.js; daarom is onze libheif.js is geminificeerd. SOURCE.txt legt deze stap ook uit. Een rebuild is niet gegarandeerd bit-voor-bit identiek te zijn aan de bestanden die wij leveren.

Vervang de bibliotheek door je eigen versie

De converter laadt libheif.js en libheif.wasm als twee aparte bestanden van /vendor/libheif-js/, via /heic-worker.js. Om je eigen build te gebruiken, vervang je de beide bestanden, met behoud van dezelfde namen en map. Je build moet de interface bieden die /heic-worker.js gebruikt:

Praktisch: sla de pagina en deze bestanden op, zet je build op dezelfde plek en serveer die map zelf (bijvoorbeeld met python3 -m http.server), of gebruik de lokale override-functie van je browser om je eigen bestand op hetzelfde adres te serveren.

Uw rechten

Je mag de bibliotheek aanpassen voor eigen gebruik, en je mag deze reverse-engineering toepassen om die aanpassingen te debuggen. Niets op deze site of in de voorwaarden beperkt dat.

Eerdere decoder

Tot 26 september 2026 gebruikte deze site de heic2any bibliotheek (versie 0.0.4, MIT-licentie) voor HEIC-bestanden. Het wordt niet langer gebruikt en de bovengenoemde licentie heeft er geen betrekking op: de decoder die we nu leveren is de LGPL-3.0 libheif-js die op deze pagina wordt beschreven. We hebben heic2any vervangen omdat het het contrast en de kleuren van veel telefoonfoto's veranderde en sommige nieuwere HEIC-bestanden niet kon lezen.

Vragen

Gebruik de feedbackknop op een willekeurige pagina, of neem contact met ons op via de contactpagina.