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
- libheif-js 1.23.2: een Emscripten (WebAssembly) build van libheif 1.23.2, met de libde265 1.0.15 HEVC-decoder erin. Licentie van libheif, libde265 en de libheif-js wrapper: GNU Lesser General Public License v3.0 (LGPL-3.0). Copyright struktur AG, Dirk Farin en de libheif / libde265 bijdragers; libheif-js wrapper door Kiril Vatev en bijdragers.
- De bestanden zijn gebouwd met Emscripten 3.1.61 en kunnen Emscripten runtime code en delen van de musl C-bibliotheek bevatten. Die delen zijn niet LGPL: ze vallen onder de MIT / NCSA-licenties, gereproduceerd in EMSCRIPTEN-NOTICE.txt. Deze lijst komt van het build script en de strings in de binary, niet van een volledige audit van het gecompileerde bestand.
- Onze eigen kleine bestanden, /heic-worker.js en /heic-decode.js, zijn geschreven in gewone, leesbare JavaScript (niet geminified). Ze roepen de bibliotheek aan; ze bevatten deze niet.
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):
- /vendor/libheif-js/libheif.js (JavaScript glue) en /vendor/libheif-js/libheif.wasm (de decoder)
- /vendor/libheif-js/LICENSE.txt: de volledige LGPL-3.0 en GPL-3.0 teksten zoals geleverd met libheif
- /vendor/libheif-js/LICENSE-libheif-js-wrapper.txt: de LGPL-3.0 tekst zoals geleverd met het libheif-js pakket
- /vendor/libheif-js/EMSCRIPTEN-NOTICE.txt: MIT / NCSA / musl licentieteksten voor de Emscripten runtime delen
- /vendor/libheif-js/SOURCE.txt: versies, checksums, bronlinks, build- en vervangingsinstructies (dezelfde informatie als hieronder)
SHA-256 van de twee binaire bestanden:
- libheif.js:
f148d9ff173e5a6d6781e80dccb8336f54bfbb032392ceb2d37e0e92923c4bf3 - libheif.wasm:
e4aa8333fbe55ec7c6c776f735236f40bed9103188498f8131d4e52b73cdfee8
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.
- libheif-js-1.23.2.tar.gz: de wrapper en packaging, tag
1.23.2(commit6ca00b818c0ff51cb2a5c75b9ce97d708083335a).
SHA-256a52f4570a2c479db9875fd3d082748e41ed69057c77b81bc8bac7a689feab259 - libheif-emscripten-v1.23.2.tar.gz: het build-recept, tag
v1.23.2(commitdd5a19b878149437a5a427f6e1afa8bac624a714).
SHA-2561b1b71e8b34ccc2b9ba490d769172ad855c279efdc787d8ea7a901af177ebcab - libheif-ac1cb05c39008f01525c991ff8b88f84ddf70fd2.tar.gz: libheif 1.23.2, de submodule die libheif-emscripten vastlegt, commit
ac1cb05c39008f01525c991ff8b88f84ddf70fd2.
SHA-25636c9b259386f1ffb3ed12d7ca01664fde8ef03802ded750de17db53303b099e7 - libde265-1.0.15-release.tar.gz: het libde265 1.0.15 releasebestand dat het buildscript van libheif downloadt (het bevat het gegenereerde
configurescript).
SHA-25600251986c29d34d3af7117ed05874950c875dd9292d016be29d3b3762666511d - libde265-v1.0.15.tar.gz: dezelfde versie als een standaard repository-archief, tag
v1.0.15(commit17bb8d9fcea62db8cdeb0fc7ef8d15dbd19a22e4).
SHA-256d4e55706dfc5b2c5c9702940b675ce2d3e7511025c6894eaddcdbaf0b15fd3f3
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:
- een globale functie
libheif(options)(Emscripten MODULARIZE, naamlibheif) die accepteertlocateFile,onRuntimeInitializedenonAborten de module retourneert;libheif.jsvindtlibheif.wasmvialocateFile new module.HeifDecoder()zijndecode(bytes)(retourneert een lijst met afbeeldingen) en dedecodereigenschap- per afbeelding:
is_primary(),get_width(),get_height(),has_alpha_channel(),display({data, width, height}, callback)enfree() module.heif_context_free(handle)
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.